2010-06-05 57 views
0

我有一个简单的ZF应用程序(无模块),在我使用它们之前的require类时它可以正常工作。但是,我想使用ZF自动加载器自动加载它们(我认为这是默认行为)。使用ZF自动加载机加载模型

我该怎么做呢?我很困惑新的(ish)Zend_Application做事的方式。我的目录结构是标准之一:

application/ 
    controllers/ 
    models/ 
    views/   
    scripts/ 
    Bootstrap.php 

例如移除这种方法要求:

class HomeController extends Zend_Controller_Action { 
    public function indexAction() { 
     $tasks = array(); 

     //require 'models/Task.php'; 
     $tasks[] = new Application_Model_Task(array(...)); 
    } 
} 
+0

您是否使用“zf”命令行工具创建应用程序,或者您是否按照通常的目录结构手动创建项目? – Alistair 2010-06-05 15:03:20

+0

相关问题http://stackoverflow.com/questions/2974996/zend-not-autoloading-models – robertbasic 2010-06-05 15:46:13

+0

@Alistair我用zf – Ross 2010-06-07 16:59:59

回答

3

如果您使用的Zend框架1.8版(+)把这个在您的bootstrap.php中:

/** 
    * Initialize the autoloader 
    * 
    * @return Zend_Application_Module_Autoloader 
    */ 
    protected function _initAutoload() 
    { 
     $autoloader = new Zend_Application_Module_Autoloader(array(
       'namespace' => 'My', 
       'basePath' => dirname(__FILE__), 
     )); 

     return $autoloader; 
    } 

现在尝试:

$model = new My_Model_Task(); 
+0

我用Application取代了My,它工作得很完美 - 谢谢! – Ross 2010-06-07 17:03:30

+0

好!你也可以用“”替换“Application”,并使用:new Model_Task() – opHASnoNAME 2010-06-08 04:10:32