校正オプションの拡張

拡張アプリでの校正オプションの拡張の仕方を見ていきます。名前空間・クラス名に気をつけましょう。

ファイル名は任意ですが、わかりやすくする為、Corrector.php とします。

例: extension/plugins/SamplePlugin/Corrector.php

<?php

namespace Acms\Plugins\SamplePlugin;

class Corrector
{
    /**
     * sample
     * 校正オプションのサンプルメソッド
     *
     * @param  string $txt  - 校正オプションが適用されている文字列
     * @param  array  $args - 校正オプションの引数 {var}[sample('ここの値')]
     * @return string       - 校正後の文字列
     */
    public function sample($txt, $args = array())
    {
        // 例 {var}[sample('hoge','fuga')]
        // {var}の中は,'a-blogcms' とする

        $hoge = isset($args[0]) ? $args[0] : null; // 'hoge'
        $fuga = isset($args[1]) ? $args[1] : null; // 'fuga'

        return $hoge.$fuga.'+'.$txt; // 'hogefuga+a-blog cms'
    }
}

ServiceProviderの設定

これだけでは、通常の拡張方法と違い動作しません。動作させるためには、このクラスのオブジェクトをa-blog cmsに登録する必要があります。

ServiceProviderで校正オプションの実装クラスを登録する

拡張アプリの基本で作成した ServiceProviderに少し手を加えます。

<?php

namespace Acms\Plugins\SamplePlugin;

use ACMS_App;
use Acms\Services\Common\CorrectorFactory;

class ServiceProvider extends ACMS_App
{
    /* 省略... */

    /**
     * サービスの初期処理
     */
    public function init()
    {
        $corrector = CorrectorFactory::singleton();
        $corrector->attach('SampleCorrector', new Corrector);
    }

    /* 省略... */
}

ポイント

Acms\Services\Common\CorrectorFactory のオブジェクトを

CorrectorFactory::singleton();

で取得して 先ほど作成した Acms\Plugins\SamplePlugin\Correctorattach します。

  • 第一引数: 被らないような任意の文字列
  • 第2引数: 実装クラスのオブジェクト

これで拡張アプリをインストールすれば、Corrector.php で実装した校正オプションが利用できるようになります。