web-dev-qa-db-ja.com

PHPでプラグインシステムを構築する

私は自分用のカスタムCMSに取り組んでおり、コードを少し簡単に拡張できるようにプラグインシステムを実装することを考えていました。しかし、アーキテクチャとレイアウトの概念化に問題があります。

同様の機能を実装するいくつかのオープンソースプログラムを実行できることはわかっていますが、これは現時点では実際には学術的なものであるため、外国のコードを掘り下げることにあまり時間をかけたくありません。

誰かがどのように進めるかについて何か良いアイデアを持っていますか?誰かがより人気のあるプログラムのいくつかがそれをどのように行うかを概説できれば、それは完璧でしょう。

34
Eric Lamb
  1. プラグインにプラグインする機能を定義します(つまり、プラグインは何を実行し、何を実行するか)
  2. すべての記事マングリングプラグインがArticleManglerから継承する必要があるように、プラグインが適合するクラス階層を定義します
  3. / pluginsなどのプラグインの物理的な場所を定義します
  4. その場所に存在するすべてのプラグインをインポートします
  5. Decorator または Observer パターンのいずれかを使用して、プラグインの動作を挿入するか、プラグインにイベントの発生を通知します。 戦略 場合によっては適用されることもあります。

PHPを使用すると、これはかなり簡単になりますが、注意しないと混乱する可能性があります。プラグインがプラグインマネージャーに登録し、プラグインが何が起こったかを通知し、アクションが発生するのを待つオブザーバーメソッドが好きです。

プラグインを信頼しない場合は、プラグインの登録を許可するイベントを追加コントロールする必要があります。

36
Vinko Vrsalovic