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