2011-10-26 41 views
0

所以我知道在Zend Framework中,如果你的函數名遵循特定的路徑約定,例如。 Path_To_Function :: function()當函數位於path/to/function中時(或者這種性質),ZF將自動在該位置包含所需的文件自動需要zend框架中的靜態調用文件

但這不是我所做的。我所做的基本上是把所有我想包含的地方放到php的include_path中,然後只需要這個文件然後調用這個函數。

像下面

require_once('Class.php'); 
Class::something(); 

,其中Class.php是的include_path中的目錄裏面

但隨後這是多餘的,因爲我已經靜態函數調用指定的類名Class::something()和幾乎所有我的函數是靜態的...

有配置/黑客zend的這樣一種方式,如果我做一個靜態調用:

SomeClass::dosomething(); 

它會根據該靜態調用的類名自動執行require_once('SomeClass.php')

回答

1

Bootstrap類將這個

protected function _initAutoloader() 
{ 
    $autoloader = Zend_Loader_Autoloader::getInstance(); 
    $autoloader->setFallbackAutoloader(true); 
    return $autoloader; 
} 

http://framework.zend.com/manual/en/zend.loader.autoloader.html#zend.loader.autoloader.usage

真的,你應該命名空間的類,因爲這不僅使自動加載更容易,但阻止可能發生的衝突,例如

// library/My/Class.php 
class My_Class { // ... 

// library/My/SomeClass.php 
class My_SomeClass { // ... 

然後您只需將名稱空間前綴添加到您的應用程序config中的自動裝載器

autoloadernamespaces.My = "My_"