コアクラスを置き換えずに拡張する
最も簡単で、あなたが生成した他のクラスと同様に動作します。 グローバル名前空間のコアクラスを単に拡張します。
class MyConfig extends Config {}
何をしているかを理解してください。同じ名前で拡張されたコアメソッドは、アプリケーションからと同様にコアから使用されます。 そのため予期しない振る舞いをすることがあります。
最も簡単で、あなたが生成した他のクラスと同様に動作します。 グローバル名前空間のコアクラスを単に拡張します。
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:
Autoloader クラスは特別なクラスで、Autoloader
として一度だけ拡張して使用可能です。
拡張した後は、app/bootstrap.php ファイルでオリジナルの Fuel\Core\Autoloader
の後に
手動で読み込まなければなりません。
グローバルにコアクラスをエイリアスしている行を削除することを忘れないで下さい。