校正オプションの拡張
拡張アプリでの校正オプションの拡張の仕方を見ていきます。名前空間・クラス名に気をつけましょう。
ファイル名は任意ですが、わかりやすくする為、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\Corrector を attach します。
- 第一引数: 被らないような任意の文字列
- 第2引数: 実装クラスのオブジェクト
これで拡張アプリをインストールすれば、Corrector.php で実装した校正オプションが利用できるようになります。