ZendFramework中实现自动加载models

最近自学Zendframework中,写Controller的时候总要require model下的类文件,然后才能实例化,感觉非常不爽

Google了许久,找到个明白人写的方法不错,主要就是修改application下的Bootstrap.php文件

全部代码如下:

 1 <?php
 2 
 3 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
 4 
 5 {
 6 
 7     //重新定义资源自动加载器
 8 
 9     protected function _initAutoload()
10 
11     {
12 
13         $moduleLoader=new Zend_Application_Module_Autoloader(array('namespace'=>'','basePath'=>APPLICATION_PATH));
14 
15         /* 实现自动加载Models下的类 */
16 
17         $autoloader = Zend_Loader_Autoloader::getInstance();
18 
19         $autoloader->setFallbackAutoloader(true);
20 
21         return $moduleLoader;
22 
23     }
24 
25 }

关键代码就是$autoloader的那两行,原有的Bootstrap.php中是没有的,加上就好了。

然后修改public/index.php文件,找到其中set_include_path一行,修改如下

1 set_include_path(implode(PATH_SEPARATOR, array(realpath(APPLICATION_PATH . '/../library'), get_include_path(),realpath(APPLICATION_PATH . '/models'))));

比如说现在我在models中写了个类文件叫Nav.php

 1 <?php
 2 
 3 class Nav  {
 4 
 5     public static function getNav() {
 6 
 7         return array(
 8 
 9                         array("nav" => "单篇文章" , "href" => "./single"),
10 
11                         array("nav" => "多篇文章" , "href" => "./multi"),
12 
13                     );
14 
15     }
16 
17 }

然后在IndexController中直接用下面代码就能获得返回值了~

1 Nav::getNav();
原文地址:https://www.cnblogs.com/achengmu/p/3158860.html