2013-01-06 74 views
2

我工作Zend的PHP項目,我試圖將代碼中分離出來成爲一個自定義庫,例如「自定義」。目前這主要由一些自定義表格組成。自動加載自定義庫中的Zend 1.12

我的文件夾結構如下。

/project root 
/Library 
    /Custom 
    /Forms 
     /Account 
     /Login.php 
     Base.php 
    /Zend 
    ... 

的login.php中和Base.php具有以下命名約定:

class Custom_Form_Account_Login extends Custom_Form_Base 
{ 

} 

class Custom_Form_Base extends Zend_Form 
{ 

} 

最後,我把下面一行在我的application.ini文件

autoloaderNamespaces[] = "Custom_" 

然後創建表單,我有這個控制器...

$form = new Custom_Form_Account_Login(); 

但是當我加載頁面時,出現錯誤,告訴我無法找到Custom_Form_Account_Login。顯示包含路徑,我可以看到「/ project root/Library」在那裏,所以我有點困惑,爲什麼找不到類。

我已經嘗試了一些在不同的application.ini行,我已經在更改後重新啓動服務器但錯誤依然存在。

我試過

,其他線路包括:

autoloadernamespaces[] = "Custom_" //All lowercase 
autoloaderNamespaces[] = "Custom" //Without the underscore 
autoloaderNamespaces.custom = "Custom_" 
autoloaderNamespaces.0 = "Custom_" 

由於我使用Zend 1.12提及。我最好喜歡在.ini文件中配置它。

回答

4

你的文件夾名稱爲Forms(複數),但類名稱使用Form(單數)。在你描述的上下文中,這些都需要相同。 Form(單數)可能更好,因爲它反映了ZF結構。

+0

謝謝!我認爲這樣可以,因爲我最初在/ root文件夾/應用程序下擁有完全相同的結構,然後決定將它移出到單獨的庫中,並認爲它會好的。我想知道爲什麼它在應用程序文件夾下沒問題?乾杯! – cast01

+1

它在'application'文件夾中工作的原因是有一個資源自動加載器被調用,它建立了一堆前綴/路徑映射。查看類「Zend_Application_Module_Autoloader」。謝謝,歡呼! –

+0

啊現在有道理,謝謝你進一步解釋:) – cast01