(jp) =
スティッチャーのプラグイン サポートは、スティッチャー 1.0.0-alpha5 以降で利用できます。
この投稿では、Stitcher のプラグイン システムについて説明します。 少し技術的になるかもしれませんが、一読の価値は間違いなくあります。
スティッチャー プラグインは、多くの最新プロジェクトに既に存在する 2 つの強力なコンポーネントの上に構築されています。
- Composer のオートローディング
- symfony のサービスコンテナ
これら 2 つのコンポーネントを使用すると、プラグインはコンポーザー パッケージにすぎず、Stitcher に独自のクラスとパラメーターを既存のサービスに追加する必要があることを伝えます。 これは驚くほどシンプルなコンセプトであり、魔法のように機能します。 スティッチャーのほとんどすべてと同様に、シンプルであるほど優れています。 例を見てみましょう。
# マイプラグイン
これは、プラグインのフォルダー構造がどのように見えるかです。
MyPlugin/
├── src/
│ ├── My/
│ │ ├── MyPlugin.php
│ │ └── Service.php
├── config.yml
├── services.yml
├── composer.json
└── README.md
パッケージが「プラグイン」であるための唯一の要件は、 Brendt\Stitcher\Plugin\Plugin
インターフェース。 この例では、それは My\MyPlugin
. このクラスを composer で自動ロードできるようになったら、プラグインの準備は完了です!
# プラグイン インターフェイス
の Plugin
インターフェイスでは、3 つのメソッドのみを実装する必要があります。 これらのメソッドは、スティッチャーに services.yml
と config.yml
ファイルの場所とプラグインの初期化方法。 スティッチャーとのその他のバインドは、サービス コンテナーを介して行われます。
namespace My;
use Brendt\Stitcher\Plugin\Plugin;
class MyPlugin implements Plugin
public function init()
return;
public function getConfigPath()
return __DIR__ . '/plugin.config.yml';
public function getServicesPath()
return __DIR__ . '/plugin.services.yml';
# init
方法
の init
メソッドは、すべてのプラグイン構成がロードされた後に呼び出されます。 このメソッドは、既存のサービスにプラグイン構成を追加するためのフックとして使用できます。 例として、コンソール アプリケーションにコマンドを追加します。
public function init()
$console = App::get('app.console');
$console->add(App::get('my.plugin.command.my.cmd'));
# plugin.config.yml
名前は yaml ファイルであれば問題ありません。 このファイルは他の構成ファイルとまったく同じように機能します。キーと値のペアを追加して、サービス コンテナーのパラメーターとして使用できます。 キーはネストできますが、ロードするとフラットになります。 注意すべきことの 1 つは、プラグインは既存のパラメーターをオーバーライドできないことです。
もちろん、プラグイン パラメータは、Stitcher プロジェクト内からオーバーライドできます。
my.plugin:
parameter: test
# plugin.services.yml
繰り返しますが、名前は問題ではありませんが、ルート要素には名前を付ける必要があります services
Symfony の要件に従って。 追加することもできます parameters
ここ。
services:
my.plugin.my.service:
class: My\Service
arguments: ['%my.plugin.parameter%', '%directories.src%', '@stitcher']
ご覧のとおり、Stitcher のサービスとパラメーターだけでなく、独自のものも利用できます。
# プラグインのロード
最後に、プロジェクトをアクティブにするには、プラグインをプロジェクトにロードする必要があります。 の plugins
プロジェクトの構成ファイルのパラメーターは、そのために使用されます。
plugins:
- My\MyPlugin
それでおしまい!
# 将来の可能性
このプラグイン システムは非常にシンプルですが、Stitcher プロジェクトにあらゆる種類の機能を追加する可能性を開きます。 これは、私自身のアイデアに向けた重要な一歩です。 カスタム テーマおよびその他のアプリケーション (API および CMS)。 今後、その真の強さをさらに発見するでしょう。
私にとって最も重要なことは、そのシンプルさです。 他のアプリケーションのプラグイン システムを見ると、仮想ディレクトリ構造、カスタム プラグイン ローダー、汚いファイル命名規則、独自のパッケージ マネージャーなどの複雑なセットアップがよく見られます。オンにし、システムをできるだけきれいに保ちます。 このアプローチは正しい方向への一歩だと信じています。