最近自学Zendframework中,写Controller的时候总要require model下的类文件,然后才能实例化,感觉非常不爽
Google了许久,找到个明白人写的方法不错,主要就是修改application下的Bootstrap.php文件
全部代码如下:
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { //重新定义资源自动加载器 protected function _initAutoload() { $moduleLoader=new Zend_Application_Module_Autoloader(array('namespace'=>'','basePath'=>APPLICATION_PATH)); /* 实现自动加载Models下的类 */ $autoloader = Zend_Loader_Autoloader::getInstance(); $autoloader->setFallbackAutoloader(true); return $moduleLoader; } }
关键代码就是$autoloader的那两行,原有的Bootstrap.php中是没有的,加上就好了。
然后修改public/index.php文件,找到其中set_include_path一行,修改如下
set_include_path(implode(PATH_SEPARATOR, array(realpath(APPLICATION_PATH . '/../library'), get_include_path(),realpath(APPLICATION_PATH . '/models'))));
比如说现在我在models中写了个类文件叫Nav.php
<?php class Nav { public static function getNav() { return array( array("nav" => "单篇文章" , "href" => "./single"), array("nav" => "多篇文章" , "href" => "./multi"), ); } }
然后在IndexController中直接用下面代码就能获得返回值了~
Nav::getNav();