コアクラスの拡張

何をしているかを理解してください。同じ名前で拡張されたコアメソッドは、アプリケーションからと同様にコアから使用されます。 そのため予期しない振る舞いをすることがあります。

コアクラスを置き換えずに拡張する

最も簡単で、あなたが生成した他のクラスと同様に動作します。 グローバル名前空間のコアクラスを単に拡張します。

class MyConfig extends Config {}

コアクラスを拡張し、置き換える

If you want your core extension to be used by the core as well as by your own application you need to extend it under the same name but take it from the "Fuel\Core" namespace. Below is an example for the Lang class which you create in "fuel/app/classes/lang.php":

class Lang extends Fuel\Core\Lang {}

しかし、コアクラスを同じ名前を持つクラスは、デフォルトでは無視されます。 オートローダに置き換えたクラスを認識させるには、アプリケーションブートストラップファイルで登録するする必要があります。次の行を探してください:

Autoloader::add_classes(array(
	// ここにオーバーライドしたいクラスを追加します
	// Example: 'View' => APPPATH.'classes/view.php',
));

As is explained in the comments you need to add the new Lang class as follows:

Autoloader::add_classes(array(
	// ここにオーバーライドしたいクラスを追加します
	// Example: 'View' => APPPATH.'classes/view.php',
	'Lang' => APPPATH.'classes/lang.php',
));

この後、コアクラスはあなたが拡張したクラスに置き換わります。

The core class will still be available when used with full namespace prefixed. With the above example of extending "Lang" you can still use the original by calling "Fuel\Core\Lang".

パッケージからコアを拡張する

コアの名前空間としてパッケージを追加することで、オートローダはコアからロードする前に あなたのパッケージからクラスをロードしようとします。 それらのクラスは検出されるようにオートローダでクラスを登録しなければなりません (ファイルシステムオートローダはグローバルへのエイリアスをサポートしません)。 以下は View クラスを拡張する例です。

Autoloader::add_core_namespace('Example');

Autoloader::add_classes(array(
	'Example\\View'  => __DIR__.'/classes/view.php',
));

拡張の制限

All classes can be extended from app. Most classes can be extended from packages but there are a few exceptions:

  • Fuel
  • Config
  • Profiler
  • Security
  • Event
  • メインの app/config/config.php で使用するクラス

オートローダ

Autoloader クラスは特別なクラスで、Autoloader として一度だけ拡張して使用可能です。 拡張した後は、app/bootstrap.php ファイルでオリジナルの Fuel\Core\Autoloader の後に 手動で読み込まなければなりません。 グローバルにコアクラスをエイリアスしている行を削除することを忘れないで下さい。