Autoloader::add_classesに追記するとoilでエラーになる件
FuelPHPの話。simpleauthを拡張した直後にoil実行したらerrorになった。
~/modules/admin$ php oil g controller history index Fatal error: Class 'Error' not found in /home/account/modules/admin/fuel/core/bootstrap.php on line 79 Fatal error: Class 'Config' not found in /home/account/modules/admin/fuel/core/bootstrap.php on line 47
'Error'が無いといわれたのでrequire_onceでFuel\Core\Errorを読み込んでみたり、core内を色々(一時的に)書きこんでみたけどわからん。
そして最終的に以下のsimpleauthを拡張したtipsterauthに関する記述が原因だと気づいた
Autoloader::add_classes(array( 'Auth\\Auth_Login_Tipsterauth' => BASEPATH.'packages/auth/classes/auth/login/tipsterauth.php', 'Auth\\Auth_Acl_Tipsteracl' => BASEPATH.'packages/auth/classes/auth/acl/tipsteracl.php', 'Auth\\Auth_Group_Tipstergroup' => BASEPATH.'packages/auth/classes/auth/group/tipstergroup.php', ));
#ちなみに BASEPATH=~/modules/admin/fuel/base
#このBASEPATH配下に実在するモジュールをAutLoaderに書きこんでいた。
ここで、Autoloaderに書き込むのはAPPPATH.以下でないと読み込めないのかと考え、以下のとおり記述を修正し、モジュールも配置し直した。
'Auth\\Auth_Login_Tipsterauth' => APPPATH.'classes/base/packages/auth/classes/auth/login/tipsterauth.php', 'Auth\\Auth_Acl_Tipsteracl' => APPPATH.'classes/base/packages/auth/classes/auth/acl/tipsteracl.php', 'Auth\\Auth_Group_Tipstergroup' => APPPATH.'classes/base/packages/auth/classes/auth/group/tipstergroup.php',
結果、エラーは解消された。
このことから、やはりエラーの原因はAPPPATH配下に置かなかったことだと考えた。しかし、この話を知人のSEにしたらAPPPATH配下でなくてもいけるとのことらしい。もしかしらたこれは邪道な解決方法なのか?取り急ぎはエラーが出なくなったからいいけど、時間ある時に別のやり方を検証してみようかと思う。
参考:
Class not found fuelphp oil http://stackoverflow.com/questions/16865795/class-not-found-fuelphp-oil
[FuelPHP]独自オリジナル認証ドライバをsimpleauthを参考に実装する1 http://to-developer.com/blog/?p=155