1

私は、人々が自分の会社に実装するためのホワイトラベルとして提供するCakePHPアプリケーションを開発しています。そして、彼らは彼ら自身のために特定のカスタマイズ機能を持っている必要があります。

手始めに、ビューを使ってやりたいことが何でもできるようになり、まったく新しいものを追加する必要がある場合は、独自のコントローラー/モデルを追加できます。ただし、バージョンのアップグレードを簡単にするためにコントローラーやモデルに触れないようにすることをお勧めします。

基本的に、私が提供する予定のカスタマイズ機能は非常に基本的なものになります。特定のことが発生したときに「何か」と呼ぶだけで、外部システムの更新、自分自身/クライアントへの電子メール送信などを行うことができます。そういうもの。

これを行うための最良の方法は何ですか?

私の計画は、物事を合理的に整理するために、私のコントローラーごとに「ファイル」(1つのクラス)を用意することです。このファイルには、私のコードが呼び出す空のメソッドがたくさんあり、それらのメソッド内にコードを追加して、必要なことをすべて実行できます。

具体的な質問は、空のメソッドでいっぱいのこのクラスをコンポーネントにする必要があるかどうかです。コントローラー?通常のプレーンPHPクラスですか?

このクラスのメソッドをコントローラーから呼び出す必要があるので、コントローラーにすることは問題外だと思います(おそらく、それが私のものから継承するコントローラーであるか、または私のものがそれらのコントローラーから継承する場合を除きます)。また、これらのメソッドの実装者がモデルとコンポーネントにアクセスできるようにする必要がありますが、App :: Importを使用することはできますが、魔法の$this->ModelNameメンバーを設定する必要はありません。 。

また、私が作成したこのファイル(コンポーネントまたはコントローラー)は、他の(私の)コントローラー/コンポーネントの隣のアプリフォルダーに存在する必要がありますか?または、vendorsフォルダーのように別の場所にスローできますか?

あなたは以前にこのようなことをしたことがありますか?
避けるべきヒント/アドバイス/落とし穴は大歓迎です。

私はこれが一種の主観的であることを知っています、あなたが以前にこれをしたならば、私はあなたの経験から主に聞くことを探しています。

ありがとう!

4

2 に答える 2

1

共通のイベントセットを設定し、イベントシステムにリンクされているようなものを使用してこれを処理します。

これにより、クライアントはイベントハンドラークラスを管理し(readmeを読んで意味を確認)、アプリケーション全体でイベントをサブスクライブしてブロードキャストできます。

また、ユーザーがコア機能に煩わされないようにしたい場合は、メインアプリをプラグインとしてパッケージ化することをお勧めします。

http://github.com/m3nt0r/eventful-cakephp

于 2010-10-04T22:32:43.863 に答える
1

頭に浮かんだ2つのアイデア:

  • abstractクライアントが拡張できるテンプレート (コントローラー、モデルなど、必要なもの) を作成する
  • コントローラー/コンポーネント/モデルを独自の名前空間内のプラグインとして記述します

最終的には、クライアントが独自の Cake コードを記述する必要がある「強化された」Cake フレームワークを提供したいと考えているようです (ただし、これが「基本的なカスタマイズ機能」のアイデアとどのように連携するかはわかりません)。そのため、コードを可能な限り「オプション」の方法 (名前空間のプラグイン、コンポーネント、AppModel拡張機能、追加のライブラリ) で記述し、これらの使用方法に関するドキュメントを提供して、クライアントが作業を高速化できるようにする必要があります。

于 2010-10-03T02:56:15.753 に答える