フックの拡張
拡張アプリでのフックの拡張の仕方を見ていきます。名前空間・クラス名に気をつけましょう。
ファイル名は任意ですが、わかりやすくする為、Hook.php とします。
例: extension/plugins/SamplePlugin/Hook.php
<?php
namespace Acms\Plugins\SamplePlugin;
class Hook
{
/**
* 例: グローバル変数の拡張
*
* @param array &$globalVars
*/
public function extendsGlobalVars(&$globalVars)
{
$globalVars->set('SAMPLE', 'サンプルのグローバル変数です');
}
}ServiceProviderの設定
これだけでは、通常の拡張方法と違い動作しません。動作させるためには、このクラスのオブジェクトをa-blog cmsに登録する必要があります。
ServiceProviderでHook実装クラスを登録する
拡張アプリの基本で作成した ServiceProviderに少し手を加えます。
<?php
namespace Acms\Plugins\SamplePlugin;
use ACMS_App;
use Acms\Services\Common\HookFactory;
class ServiceProvider extends ACMS_App
{
/* 省略... */
/**
* サービスの初期処理
*/
public function init()
{
$hook = HookFactory::singleton();
$hook->attach('SampleHook', new Hook);
}
/* 省略... */
}ポイント
Acms\Services\Common\HookFactory のオブジェクトを
HookFactory::singleton();
で取得して 先ほど作成した Acms\Plugins\SamplePlugin\Hook を attach します。
- 第一引数: 被らないような任意の文字列
- 第2引数: 実装クラスのオブジェクト
これで拡張アプリをインストールすれば、Hook.php で実装したHookが利用できるようになります。