クラス
クラスとは?
クラスは通常の PHP クラスです。何かを継承したり、ネーミング以外の制約に従う必要はありません。制約は、Fuel のその他のすべてのクラスと同じものです。
class Session
これは app/classes/session.php をロードします。
クラスの読み込み
他のフレームワークとは違って、クラスは手動でロードする必要はありません。コード (コントローラやモデルなど) 内で参照すると自動的にロードされます。
サブディレクトリ内のクラス
Controllers と同様に、クラスは最初の文字のみ大文字でその他は小文字にしなければなりません。一方アンダースコアはサブディレクトリにクラスを置きます。
Class Session_Driver
これは app/classes/session/driver.php をロードします。
クラスと名前空間
ロードする PHP ファイルを決める際に、FuelPHP のオートローダは名前空間とアンダースコアのクラス名をまったく同じに扱います。
これは、サブディレクトリ内のクラスで、自由に名前空間とアンダースコアをうまく組み合わせて使うことができるということです。
たとえば、ファイル app/classes/core/system/messages.php の中のクラスの場合、このファイル内のクラスは、次のように定義できます:
// グローバル名前空間、アンダースコアだけのクラス名
class Core_System_Messages {}
// 名前空間とアンダースコアのコンビネーション
namespace Core;
class System_Messages {}
// 名前空間だけ
namespace Core\System;
class Messages {}
最初の方法は最も一般的に使用され、理解するのも最も簡単です。名前空間つきバージョンは、定義されたクラスを使用する Use ステートメントを組み合わせて使うと
特に便利です。
クラスの初期化
クラスがロードされたときに、Fuel のオートローダに何らかのタスクを自動的に実行させることができます。
これは __construct()
がクラスのインスタンスにすることと同様です。
これはクラスに public の _init()
メソッドを追加することで可能になります。
class Example {
public static function _init()
{
// これはクラスをロードしているときに呼び出されます。
}
}
読み込まれたクラスが自身に _init()
メソッドがあり、親クラスがそれと一緒にロードされる必要がある場合、
親クラスの init メソッドは
parent::_init();
を使用しない限り呼び出されません。