|
Yaf_Loader クラスはじめにYaf_Loader は、 Yaf 用に包括的なオートローディング機能を導入します。 最初に Yaf_Application のインスタンスを取得するときに、 Yaf_Loader はシングルトンのインスタンスを作って それを spl_autoload に登録します。このインスタンスを取得するには Yaf_Loader::getInstance を使います。
Yaf_Loader は、クラスのロードを一度だけ試みます。
失敗した場合の挙動は yaf.use_spl_auload
によって変わります。もしこの設定が On なら
Yaf_Loader::autoload は
デフォルトでは、Yaf_Loader はすべてのライブラリ (クラスを定義したスクリプト) が グローバル ライブラリディレクトリ に格納されているものとみなします。このディレクトリは、 php.ini (yaf.library) で指定します。 Yaf_Loader がクラス (ライブラリ) を探すときに ローカルクラスディレクトリ (application.ini で定義するもので、デフォルトは application.directory . "/library") も検索対象とさせたい場合は、クラスのプレフィックスを Yaf_Loader::registerLocalNameSpace で登録する必要があります。 いくつか例を示します (APPLICATION_PATH は application.directory であるものとします)。 例1 設定の例 // php.ini で、これを設定しているものとします yaf.library = "/global_dir" // application.ini で、これを設定しているものとします application.library = APPLICATION_PATH "/library" 例2 localnamespace の登録 例3 クラスのロード class Foo_Bar_Test => // APPLICATION_PATH/library/Foo/Bar/Test.php class GLO_Name => // /global_dir/Glo/Name.php class BarNon_Test // /global_dir/Barnon/Test.php 例4 名前空間つきのクラスのロード class \Foo\Bar\Dummy => // APPLICATION_PATH/library/Foo/Bar/Dummy.php class \FooBar\Bar\Dummy => // /global_dir/FooBar/Bar/Dummy.php すべてのフォルダの先頭が大文字になっているのが気になる場合は、php.ini で yaf.lowcase_path = On とすれば小文字にすることもできます。 Yaf_Loader は MVC クラスを読み込むようにも作られています。 次のような規約に従います。 例5 MVC クラスのロード Controller Classes => // APPLICATION_PATH/controllers/ Model Classes => // APPLICATION_PATH/models/ Plugin Classes => // APPLICATION_PATH/plugins/ 例6 MVC クラスかどうかの区別 Controller Classes =>
// ***Controller
Model Classes =>
// ***Model
Plugin Classes =>
// ***Plugin
例7 MVC のロード class IndexController
// APPLICATION_PATH/controllers/Index.php
class DataModel =>
// APPLICATION_PATH/models/Data.php
class DummyPlugin =>
// APPLICATION_PATH/plugins/Dummy.php
class A_B_TestModel =>
// APPLICATION_PATH/models/A/B/Test.php
また、ディレクトリは yaf.lowcase_path の影響を受けます。 クラス概要Yaf_Loader
class Yaf_Loader
{
/* プロパティ */
protected
$_local_ns;
protected
$_library;
protected
$_global_library;
static
$_instance;
/* メソッド */
private __construct()
public void autoload()
public void clearLocalNamespace()
public static void getInstance()
public Yaf_Loader getLibraryPath(bool
$is_global = false)public void getLocalNamespace()
public string getNamespacePath(string
$namespaces)public array getNamespaces()
public static void import()
public void isLocalName()
public void registerLocalNamespace(mixed
$prefix)public bool registerNamespace(stringarray
$namespaces, string $path = ?)public Yaf_Loader setLibraryPath(string
}$directory, bool $is_global = false)プロパティ
|