ヒント: PHP でのプラグイン メカニズムの実装ソリューション
この記事の出発点は、PHP でのプラグイン メカニズムとその実装についての私の理解です。このソリューションは、PHP のプラグイン メカニズムの実装ソリューションの 1 つにすぎません。ぜひ書き留めて、みんなで共有してください。
プラグインは、プラグインとも呼ばれ、特定のタイプの機能モジュールを指します (通常、サードパーティの開発者によって実装されます)。その特徴は、必要なときにアクティブ化し、不要なときに無効化/削除することです。つまり、プラグインは、システムのコア モジュールの動作に影響を与えず、モジュール間で疎結合を実現します。コアプログラムとプラグインプログラム。典型的な例は、ユーザー コメントのスパムをフィルタリングするために使用される Akimet プラグインなど、WordPress の多数のサードパーティ プラグインです。
堅牢なプラグイン機構には、次の特性が必要だと思います:
プラグインの動的な監視と読み込み (Lookup)
プラグインの動的なトリガー
上記 2 点の実装コア プログラムの動作には影響しません
プログラムにプラグインを実装するには、最初にさまざまなフックを定義することを考えなければなりません。「フック」は非常に鮮やかな論理概念であり、それを考えることができます。システムによって予約されたプラグインのトリガー条件として。その論理原理は次のとおりです。システムは特定のフックを実行するときに、フックの条件が満たされているかどうかを判断し、満たされている場合は、最初にフックで指定された関数を呼び出し、次に戻ってフックの実行を継続します。プログラムの残りの部分が満たされていない場合は、フックで指定された関数が最初に呼び出され、それをスキップします。これは、アセンブリの「割り込み保護」ロジックに似ています。
一部のフックはシステムによって事前に設計されている場合があります。たとえば、コメント スパム フィルタリングについて前述したフックは、通常、コア システム開発者によってコメント処理ロジックに設計されています。別の種類のフックはユーザーによってカスタマイズされる場合があります。 (サードパーティ開発者によって策定された) は、通常、通常の PHP フォーム表示ページなどのプレゼンテーション層に存在します。
上の言葉は退屈で眠くなると思われるかもしれませんが、私が以下に書いたコードを理解するには、上記の原則を理解することが不可欠です。
以下は、PHP におけるプラグイン メカニズムのコア実装です。メカニズム全体のコアは、3 つの主要なブロックに分かれています。
プラグイン マネージャー クラス: これは、コアのコアです。これはアプリケーションのグローバルな Global オブジェクトです。これには 3 つの主な役割があります:
登録されているすべてのプラグインを監視し、これらのプラグイン オブジェクトをインスタンス化する責任があります。
すべてのプラグインの登録を担当します。
フック条件が満たされると、対応するオブジェクトメソッドがトリガーされます。
プラグイン機能の実装: これは主にサードパーティの開発者によって行われますが、このルールはプラグインのメカニズムによって規定されており、プラグインのメカニズムによって異なります。以下の表示コードのルール。
プラグインのトリガー: つまり、フックのトリガー条件。具体的には、これは、このフックをトリガーするプラグイン実装が必要な場所に配置される小さなコードです。