ファイルやクラスの動的な読み込みZend_Loader クラスは、ファイルを動的に読み込むためのメソッドを提供します。 Tip
Zend_Loader 対 require_once()Zend_Loader のメソッドは、読み込みたいファイルの名前が変化する場合に便利です。 たとえば、ユーザの入力やメソッドの引数などのパラメータに基づいたファイル名を使用する場合などです。 もし読み込むファイルやクラスの名前が決まっている場合は、 » require_once() のような PHP の関数ではなくあえて Zend_Loader を使用するメリットはありません。 ファイルの読み込み静的メソッド Zend_Loader::loadFile() は、PHP ファイルを読み込みます。 読み込まれるファイルには任意の PHP コードを含めることができます。 このメソッドは PHP 関数 » include() のラッパーで、失敗した場合 (たとえば指定したファイルが存在しないなど) には FALSE を返します。 Example #1 loadFile() メソッドの例
引数
引数
引数 クラスの読み込み静的メソッド Zend_Loader::loadClass($class, $dirs) は、PHP ファイルを読み込んでクラスが存在するかどうかを確かめます。 Example #2 loadClass() メソッドの例
クラスを指定する文字列は、アンダースコアを OS のパス区切り文字に変換して最後に '.php' を追加したものとなります。上の例では、Windows 上で 'Container_Tree' は 'Container\\Tree.php' となります。
ファイルが見つからない場合、あるいは読み込んだファイルにクラスが存在しない場合は Zend_Loader::loadClass() は Zend_Exception をスローします。 ファイルの読み込みには Zend_Loader::loadFile() を使用するので、 クラス名として指定できるのは 英数字とハイフン ('-')、アンダースコア ('_') そしてピリオド ('.') だけです。
ファイルが読み込み可能かどうかの確認静的メソッド Zend_Loader::isReadable($pathname) は、指定した場所にファイルが存在して読み込み可能な場合に TRUE、それ以外の場合に FALSE を返します。 Example #3 isReadable() メソッドの例
引数 Autoloader の使用法
Zend_Loader クラスには、PHP の SPL
自動ローダーに登録するためのメソッドが含まれています。そのコールバックメソッドが
Zend_Loader::autoload() です。利便性を考慮して、
Zend_Loader では registerAutoload() 関数を提供しています。
この関数は、 autoload() メソッドを登録するものです。
Example #4 自動ローダー用コールバックメソッドの登録例 Zend Framework の autoload コールバックを登録すると、 明示的に読み込まなくても Zend Framework のクラスを参照できるようになります。 autoload() メソッドは、クラスを参照する際に自動的に Zend_Loader::loadClass() を使用します。 Zend_Loader クラスを継承した場合は、 registerAutoload() に引数を追加できます。この引数で、どのクラスから autoload() メソッドを登録するのかを指定します。 Example #5 autoload コールバックメソッドを継承クラスから登録する例 PHP における静的関数の参照の方法上、 loadClass() と autoload() の両方のコードを実装する必要があります。 そして、 autoload() では self::loadClass() をコールしなければなりません。 作成する autoload() メソッドが親クラスに self::loadClass() の処理を任せるのなら、 サブクラスのメソッドではなく親クラス側の同名のメソッドをコールします。
autoload コールバックを削除することもできます。 registerAutoload() にはオプションで 2 番目の引数を指定することができ、 デフォルトでは TRUE が設定されるようになっています。 この引数を FALSE とすると、 指定したコールバックが SPL の autoload スタックから削除されます。
|
|