2013-02-01 65 views
0

我想調用位於Mymodule中/ myFolders我的自定義類/ myFile.php在Mymodule中/ bootstrap.php中ZEND:在模塊引導裝入自定義類

這是它的外觀現在:

<?php 

    class Users_Bootstrap extends Zend_Application_Module_Bootstrap { 

     public function _initAutoload() { 
     Zend_Loader_Autoloader::getInstance()->pushAutoloader(new NAMESPACE_Excel_ExcelAutoLoader()); // This workes fine 

     new Myfolder_Myfile(); // THIS IS WHERE I'm CALLING my CLASS 

} 

     public function _initRoutes() { 

      $router = Zend_Controller_Front::getInstance()->getRouter(); 

      $listUsersRoute = new Zend_Controller_Router_Route("admin/users/manage", array(
       'module' => 'users', 
       'controller' => 'admin', 
       'action' => 'index'  )); 

      $router->addRoute('listUsersRoute', $listUsersRoute); 


     }  } 

如果我將自定義類移動到myModule/Modles文件夾並從那裏調用它,它會起作用。

我知道Zend Bootstrap知道並自動從我的模塊中加載位置爲視圖,控制器和模型。那麼我怎樣才能讓它加載myFolder呢?

回答

1

有許多方法可以完成您正在嘗試做的事情。首先,我會問 - 是否需要MyFolder_MyFile()類在許多地方被重用?如果沒有,你可能會考慮將該類的邏輯轉換成自己的自定義引導程序 - 這會擴展你的Users_Bootstrap。然後,你有這樣的事情:

MyFolder_MyFileBootstrap extends Users_Bootstrap 

然後,您可以選擇創建單獨的_init *方法 - 或僅僅停留兼容的,你寫的,你可能只是做一個新_initAutoload()的執行父第一 - 然後任何自己的邏輯的...

MyFolder_MyFileBootstrap :: _ initAutoload()

public function _initAutload() { 
    parent::_initAutload(); 
    // my own logic here 
} 

但是,如果這個解決方案將徹底改變你的編碼應用程序的方式,您將需要使用Zend Framework Autoloader的名稱空間方法添加文件。

對於你的榜樣,你可以試試這個你_initAutoloader內()方法:

$applicationAutoloader = $this->getResourceLoader(); 
$applicationAutloader->addResourceType('myfolder', 'MyFolder', 'MyFolder'); 

根據您的文件的佈局,您可能需要調整這個有點。