Zend Autoloader は名前空間を使用して、不要なクラスで autoload プロセスを使用していないことを確認します。したがって、クラスの名前空間を選択する必要があります。
アプリケーション固有の名前空間または一般的な名前空間でクラスを開始できます。「My_」や「App_」などの名前空間は一般的なものですが、たとえば、アプリケーション名が Job Board の場合、クラス ファイルで「JB_」などの名前空間を使用できます。
独自のオートローダ (まったく新しいもの、または Zend オートローダを拡張したもの) を作成し、それをSPL オートローダとして登録して、これをバイパスすることもできます。
クラス名は、Zend Framework の命名規則に従う必要はありません。名前空間があることを確認し、その名前空間をオートローダーに登録してください。
ここに、オートロードするリソースを登録するコードの一部を添付します。複数のモジュールがあり、各モジュールにはそのモジュール名に関する名前空間があります。名前空間がたくさんあったので、それらをすべてループで登録することに注意してください。
$nameSpaceToPath = array(
'Application' => APPLICATION_PATH,
'Base' => APPLICATION_PATH . '/base',
'Store' => APPLICATION_PATH . '/modules/Store',
'Payment' => APPLICATION_PATH . '/modules/Payment',
'Admin' => APPLICATION_PATH . '/modules/Admin'
);
foreach($nameSpaceToPath as $ns => $path) {
$autoLoaderResource = new Zend_Loader_Autoloader_Resource(
array(
'basePath' => $path,
'namespace' => $ns
)
);
$autoLoaderResource->addResourceType('controller','controllers','Controller');
$autoLoaderResource->addResourceType('model','models','Model');
$autoLoaderResource->addResourceType('mapper','models/mappers','Model_Mapper');
$autoLoaderResource->addResourceType('service','services','Service');
// I'm using _Util_ in the name of my utility classes, I place them in 'utils' directory
$autoLoaderResource->addResourceType('util','utils','Util');
$autoLoaderResource->addResourceType('plugin','plugins','Plugin');
$autoLoaderResource->addResourceType('form','forms','Form');
// I'm using _Exception_ in the name of my module specific exception classes, I place them in 'exceptions' directory
$autoLoaderResource->addResourceType('exception','exceptions','Exception');
$autoLoader->pushAutoloader($autoLoaderResource);
}
以下を呼び出してリソースタイプを定義する場合:
$autoLoaderResource->addResourceType('service','services','Service');
実際には Zend Autoloader に、'services' (2 番目のパラメーター) という名前のディレクトリに配置されたタイプ 'service' (1 番目のパラメーター) があり、クラスを指定するためにクラス名で' Service ' トークンを使用していることを伝えています。このタイプ。
上記のコードは、パス 'APPLICATION_PATH/modules/store/services/Core.php' でクラス Store_Service_Core を検索するように Zend Autoloader に指示します。
ご覧のとおり、APPLICATION_PATH パスの一般的な「アプリケーション」名前空間を登録しました。これは、Application_ で始まる各クラスが APPLICATION_PATH から自動ロードされることを意味します。たとえば、いくつかの初期化タスクを使用する Application_Init という名前のクラスがあり、Zend はパス APPLICATION_PATH/Init.php からそれを自動ロードします。