2011-07-19 65 views
2

我創建了一個類擴展Zend_Controller_Action,並添加了一些用戶定義的方法,這些方法可以從任何控制器訪問。擴展Zend_Controller_Action的類,Zend Tool找不到

每件事情都很好,直到我用Zend Tool創建一個新的Action,因爲這次Zend工具不會找到我的擴展類。

錯誤消息:

Fatal error: Class 'CMS_Zend_Controller_Action' not found in....

也就是說其延伸Zend_Controller_Action類和一個由其它控制器等indexController延長。

如何讓該類可被發現。我是否必須包括每個文件夾,就像我的課程一樣? zend會這麼做嗎?我不這麼認爲。它是如何做到的?

+0

您的應用程序中的CMS_Zend_Controller_Action位於何處?我還建議不要在你的類名中包含'Zend' - 這個約定將會使用你自己的命名空間而不是'Zend'這個單詞,除此之外。所以你應該有CMS_Controller_Action。 –

+0

@Tim Fountain,我正在擴展Zend_Controller_Action,所以我更願意指出這一點。也因爲,我也有我自己的CMS_Controller_Action – Starx

+0

只是一個確認:我能夠在Windows上使用Netbeans + Zend Framework支持來複制它。在調試時,我意識到Zend_Tool不使用應用程序引導機制(至少在我測試這個時)。 – madflow

回答

0

簡單。 :-p如果它可以找到你的核心控制器,那麼你只需要包含擴展控制器的路徑。

http://php.net/manual/en/function.set-include-path.php

在你的index.php set_include_path(path_to_your_extended_classes),又名路線文件。

+0

我在我的問題中也提到過這個問題。我覺得這個選項非常有限。因爲我將不得不包括每個需要的文件夾。如果我必須這樣做,我想知道是否有方法可以提及將每個文件夾包含在文件夾中。順便提一下,Zend框架做的是什麼,set_include_path是每個庫文件夾。 – Starx

+0

@Starx它將遞歸查找文件夾。所以設置包含路徑'a /'也會包含'a/b','a/b/c','a/d'等等。試試吧。這將需要不到幾分鐘的時間。 – FinalForm

+0

在這種情況下,它已經包含了'set_include_path(implode(PATH_SEPARATOR,array( realpath(APPLICATION_PATH。'/ ..)/ library'), get_include_path(), )));'包含CMS和Zend的所有庫都包含在這個文件夾中 – Starx

0

我想你在這裏嘗試的不是Zend_Tool的功能。

儘管我理解你的問題和設置,你已經在你的圖書館中創建了一個類。當然,您可以在自己的庫/庫中使用許多自己的類來擴展Zend_Controller_Action(我也是這樣做的)。爲這樣的類添加一個動作可能並不常見,但是出於某個特定原因Zend_Tool存在問題。

Zend_Tool我相信只是像/application這樣的衆所周知的結構和/modules裏面的相同。如果你創建一個控制器類Zend_Tool將爲你做一些工作,比如將你需要的文件夾結構添加到你的/application/modules文件夾中。與需要查看文件的操作方法相同。在你的庫中有一個Controller類沒有(不應該)需要所有這些,因此不會構建到Zend_Tool中。我認爲你的庫中創建的任何類在Zend_Tool中都不受支持。