Yii Frameworkでabstract classを使う
仕事でYii Frameworkってのを使ってるのですが、日本ではじぇんじぇん流行ってないみたい。
てことで、以前はまった経験を書いておこうと思います。
普通に開発をしていると、共通の機能を抽象クラスとして切り出したい場面が出てくると思います。
だもんで、こんな風にabstract classを書いてみます。
protected/controllers/AbstractTestController.php
<?php abstract class AbstractTestController extends CController { protected function hoge() { echo "hoge"; // 共通処理 } }
protected/controllers/TestController.php
<?php class TestController extends AbstractTestController { public function actionHoge() { $this->hoge(); } }
で、ブラウザからhogeアクションにアクセスすると、怒られます。
include(AbstractTestController.php) [function.include]: failed to open stream: No such file or directory
AbstractTestController.phpが読み込めないようです。yiiには自動クラスロード機構があるので、勝手にincludeしてくれるはずなのですが。。。
protected/config/main.php
を見てみます。
// autoloading model and component classes 'import'=>array( 'application.models.*', 'application.components.*', ),
yiicで自動生成したままでは、'application.controllers.*'が入ってないようです。以下のように修正します。
// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
'application.controllers.*',
),