ラボ > FuelPHP:独自クラスやCoreクラスの継承

FuelPHPでcoreクラスを継承したい

coreクラスを少し修正したいので、継承させて使う。

作成日:2018-02-13, 更新日:2018-03-05

基本

・初めてのときは「app/config/config.php」を修正
・coreファイルを元に継承

初めてのときは「app/config/config.php」を修正

「modules」ディレクトリを使わないなら不要かも・・・。

▼「app/config/config.php」で下記をコメント解除

//'module_paths' => array(
   //APPPATH.'modules'.DS
//),
// ↓コメント解除
'module_paths' => array(
   APPPATH.'modules'.DS
),

継承

・coreのファイルをコピペ
・bootstrap.phpで「Autoloader::add_classes()」の追加

coreのファイルをコピペ

使いたいファイルを「core/〇〇〇」から「app/〇〇〇」に複製して移動。

▼名前空間のコメント

//namespace Fuel\Core;

▼継承

class 〇〇〇 extends \Fuel\Core\〇〇〇

bootstrap.phpで「Autoloader::add_classes()」の追加

▼「app/bootstrap.php」の「Autoloader::add_classes()」を修正

\Autoloader::add_classes(array(
	'〇〇〇' => APPPATH.'classes/〇〇〇.php',
));

Autoloaderを継承させたい場合

参照:Fuelphp 「Core\classes\Autoloader」を継承

Autoloaderを継承させるときのみ、もうひと手間必要だそうだ。

▼「public/index.php」 の「class_alias()」をコメント

// class_alias('Fuel\Core\Autoloader', 'Autoloader');

例:Errorhandlerを継承させる場合

1.(はじめてのとき)「app/config/config.php」で下記をコメント解除
2.coreのファイルをコピペ
3.bootstrap.phpで「Autoloader::add_classes()」の追加
※PRODUCTIONのときのエラーが「Oops!」だから変更したい

「app/config/config.php」で下記をコメント解除

'module_paths' => array(
   APPPATH.'modules'.DS
),

coreのファイルをコピペ

1.「core/classes/errorhandler.php」をコピペ→「app/classes/errorhandler.php」
2.「app/classes/errorhandler.php」の諸々修正(下記)

▼名前空間のコメント

//namespace Fuel\Core;

▼クラス名のトコで継承元の指定(PhpErrorException)

class PhpErrorException extends \Fuel\Core\PhpErrorException

▼クラス名のトコで継承元の指定(Errorhandler)

class Errorhandler extends \Fuel\Core\Errorhandler

bootstrap.phpで「Autoloader::add_classes()」の追加

\Autoloader::add_classes(array(
   // Add classes you want to override here
   // Example: 'View' => APPPATH.'classes/view.php',
   'PhpErrorException' => APPPATH.'classes/errorhandler.php',
   'Errorhandler' => APPPATH.'classes/errorhandler.php',
));

参照「Fuelphp 「Core\classes\Errorhandler」を継承

関連項目

Fuelphp 「Core\classes\Autoloader」を継承
Fuelphp 「Core\classes\Errorhandler」を継承