FuelPHP、init()、before()、after()の動きについて、簡単な説明です。
まず、サンプルコードをご覧ください。
<?phpclass Controller_Init extends Controller
{
static function _init()
{
echo 'init<br />';
}function before()
{
parent::before();
echo 'before<br />';
}
public function action_index()
{
echo 'action_index<br />';
}function after($respons)
{
echo 'after<br />';
return $respons;
}
}
この関数の並び順で、実行されます。
_init()はアンダーバーが一つにinit()です。この関数は、オートローダーが読み込んだ時点で、実行されます。つまり、オートローダーで呼び込まれるクラスであれば、コントラーであろうと、モデルであろうと、利用できます。
内部を解析していませんが、static付けない時のエラーメッセージから、推測するに、ロード(require/include)されたが、実体が生成される前に呼び出されるようです。ですから、このプログラムの関数中では一番最初に実行されます。
before()、after()、そしてコンフィグファイルのroutes.phpで指定したアクション関数はRespons::execute中で呼び出されます。つまり、コントローラの実行時に呼ばれるものですので、その他のクラス、例えばモデルでは利用できません。
実際、before()、after()が利用できるTemplateクラス、RestクラスはControllerクラスを拡張したものです。Controllerクラス自体では、before()、after()は、ただ定義してあるだけです。特に何かを実行しているわけでありません。
また、コントローラー以外でもviewmodelクラスで、before()を利用できますが、これはこのクラスのコンストラクター__construct()中でbefore()関数を呼び出しているだけです。
| adminerのセッテング< 前 | 次 >Netteをゲッツ、PHPフレームワーク。 |
|---|
| < 前 | 次 > |
|---|