2010-06-30 29 views

回答

3

該類與其他任何類一樣自動加載,因此沒有「標準」地方。所以問題就變成了,你想在哪裏生活?

我通常在模塊化應用程序中遵循的約定是在模塊中包含大部分內容,但註冊應用程序名稱空間並使用應用程序/模型作爲'核心'類型類。所以你的情況,說你的應用程序的命名空間是WordPress的,你必須:

class Wordpress_Controller_Action extends Zend_Controller_Action 
{ 

} 

和文件將住在應用程序/模型/ WordPress的/控制器/ action.php的。

爲了使這項工作,你需要在你的include路徑的應用程序/模型,你要初始化的標準自動裝載機,是這樣的(在你的引導類):

protected function _initAutoloader() 
{ 
    $autoloader = Zend_Loader_Autoloader::getInstance(); 
    $autoloader->registerNamespace('Wordpress_'); 

    return $autoloader; 
} 

或者你可以在application.ini中設置上述內容。

+0

確實有'標準'的地方。正如問題中提到的那樣,ZF的新版本自動處理自動加載,不僅將'Namespace \ _Models \ _'映射到'application/models',而且'Namespace \ _Forms \ _'映射到'application/forms',並且'dbtable','mappers','插件','服務','viewhelper','viewfilter'相同。當然,我知道我可以將它放在'application/models'中,但這是我放置*模型的地方,而不是我的控制器。 – 2010-06-30 23:59:13

+0

我知道資源自動加載器是如何工作的。我的觀點是沒有控制器基類的標準位置,所以親自把它放在模型目錄中(因爲IMO不是控制器,它只是它們使用的一個組件)。或者,你可以爲控制器註冊一個新的資源類型,並且擁有Namespace_Controller_Controller_Action,但是對於我想象中的只有一個類來說,這看起來像是過度殺傷。 – 2010-07-01 08:21:05

+0

我誤解了你的第一行,意思是說你需要自動加載的類沒有標準的地方(不僅僅是沒有控制器類的地方),我的錯誤。看起來像'應用程序/控制器'可以在沒有額外的級別的情況下使用(畢竟'真正'的控制器以'控制器'結束,這樣可以幫助解決命名問題)。猜猜這是玩的東西。 – 2010-07-01 14:13:08