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