我有一个新的ZF 1.10项目(只是默认模块,没有多个模块),并且必须在模型的类名前面加上“Application_Model_”,以便从application/models目录中提取它们。
我如何才能对此进行更多控制?例如,我希望自己为模型类命名空间-例如作为“Blah_ClassName”,甚至可能只是“ClassName”。
(我知道我可以使用set_include_path()来实现后者,但这不是非常“像Zend一样的”。我在想对自动装带器进行某种更改-但是最好的方法是什么?)
最佳答案
您正在寻找Resource Autoloaders。
在您的 bootstrap 中:
protected function _initResourceLoader()
{
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
'namespace' => '',
'basePath' => APPLICATION_PATH,
));
$resourceLoader->addResourceType('model', 'models/', 'Model');
$resourceLoader->addResourceType('form', 'forms/', 'Form');
$resourceLoader->addResourceType('service', 'services/', 'Service');
return $resourceLoader;
}
加载资源:
$form = new Form_Article // loads from APPLICATION_PATH . /forms/Article.php
$model = new Model_Article // loads from APPLICATION_PATH . /models/Article.php
$service = new Service_Article // loads from APPLICATION_PATH . /services/Article.php