フックの拡張
拡張アプリでのフックの拡張の仕方を見ていきます。名前空間・クラス名に気をつけましょう。
ファイル名は任意ですが、わかりやすくする為、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が利用できるようになります。