ZendFramework中实现自动加载models

最近自学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();

你可能感兴趣的:(autoload,自动加载,models,zendframework)