te18

最もシンプルなプラグインのサポート – Stitcher.io

(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.ymlconfig.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)。 今後、その真の強さをさらに発見するでしょう。

私にとって最も重要なことは、そのシンプルさです。 他のアプリケーションのプラグイン システムを見ると、仮想ディレクトリ構造、カスタム プラグイン ローダー、汚いファイル命名規則、独自のパッケージ マネージャーなどの複雑なセットアップがよく見られます。オンにし、システムをできるだけきれいに保ちます。 このアプローチは正しい方向への一歩だと信じています。

次の投稿
死んだ動物を食べる最も一般的な鳥
前の投稿
PHPジェネリックとそれが必要な理由

ノート:

AZ: 動物の世界、ペット、ペット、野生の自然に関するカテゴリー記事…
SP:スポーツカテゴリー。
New vs Ne: ニュースコラム。
Te: テクノロジー カテゴリ。
Gt:エンターテインメントカテゴリー。
Bt: 占い、星占い、超常現象、超常現象。
Ta:人生コラム。