重複の可能性:
PHP アプリケーションのプラグインを許可する最良
の方法 PHP イベント リスナーのベスト プラクティスの実装
管理者が(管理領域内から)プラグインを介して追加機能を有効にできるようにする必要がある単純なCMSのようなアプリケーションをPHPで構築しています。
現在、オブザーバー パターンに基づいており、次のように動作します。
- 各プラグインは抽象クラスを拡張する必要があります
- 1 つの「init」メソッドを除いて、プラグイン (子クラス) が定義するすべてのメソッドはオブザーバーと見なされます。
- 抽象クラスのコンストラクターは final であり、
get_class_methods
これらのオブザーバーをイベントにマップするために使用します。 - アプリケーションが起動してから終了するまで、オブザーバーに
app_start
/process_request
/app_end
などのイベントを通知し、アプリケーション インスタンスを最初の引数としてオブザーバー関数が実行されます。たとえば、db などの他のコンポーネントにアクセスするために使用します。
これは PHP でプラグイン アーキテクチャを実装する良い方法ですか? それとももっと良い方法がありますか?私はすでにこれを実行していますが、子クラスが使用できる新しい API を抽象クラスに追加しているので、奇妙に感じ始めます :)