欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

zend怎么自定义像models这样的类自动加载

程序员文章站 1970-01-01 07:57:18
...
zend如何自定义像models这样的类自动加载?
zend的application里有个models的文件夹是存放操作数据库的类,在控制器里直接new一下就可以用了,非常方便,因此本人也新建了一个teaa的文件夹,但不知道为什么,在new的时候老是报找不到类的错误。而且我在bootstrap里已经设置了下面的自动模块加载还是报错找不到类。
protected function _initAutoloader ()
{
$moduleAutoloader = new Zend_Application_Module_Autoloader(array('namespace' => '' , 'basePath' => APPLICATION_PATH));
return $moduleAutoloader;
}
最后,我以为是路径没有导入。在引导文件index.php的set_include_path里也加上teaa文件夹的路径,奇怪的是还是报错说找不到类,请高手指点啊。
------解决方案--------------------
默认的命名空间是
Application
Zend

如果想自定义。可以使用application.ini配置文件
例如

bootstrap.class = "Bootstrap"
appnamespace = "Application"
autoloadernamespaces.test = "Test_"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
登录后复制

autoloadernamespaces.test = "Test_"表示自定义的前缀。
例如在项目的/library定义一个TestClass
具体如下:
/library/Test/TestClass.php
文件内容:

class Test_TestClass {
public function show() {
echo "show";
}
}
登录后复制

在action中, 就可以使用了

public function indexAction()
{
$testObj = new Test_TestClass();
$testObj->show();
exit;
}
登录后复制


如果你使用的Module多模块方式,需要使用
Zend_Application_Module_Autoloader以及
Zend_Application_Module_Bootstrap类配合使用。
在_initAutoload可以使用
$this->getApplication ()的
setAutoloaderNamespaces
setIncludePaths

来设置自动加载的命名空间和includepath
可以参考
http://blog.****.net/mengxiangbaidu/article/details/7192855
或者官方文档

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频