2012-03-20 96 views
0

如何使用自動加載器來查找與Zend目錄位於同一目錄中的類文件「templater」?使用zend自動加載器加載其他類

|_ include 
     |_Zend 
     |_Templater.php 
     |_Smarty 

|_root directory 

我已存儲了Zend文件夾和文件夾的smarty和其它類在去包括根目錄以外的文件夾。

我終於弄清楚Zend如何通過將它的位置添加到include_path來找到它的類。

現在我被卡住了將由smarty使用的模板類。

我該如何讓自動加載器意識到模板類以及後來在smartyfolder中的smarty類?

+1

查看我對其他類似問題的回答,這可能對您有所幫助。 http://stackoverflow.com/a/9745531/212940 – vascowhite 2012-03-20 13:30:13

+1

您可以創建自定義自動加載器並將其推送到'Zend_Loader_Autoloader'堆棧。有關示例,請參閱http://stackoverflow.com/questions/8816426/phpexcel-class-not-found-in-zend-autoloader/8820536#8820536。 – 2012-03-20 13:44:45

回答

1

Zend Framework自動加載器對於保存類以及它們是如何命名非常挑剔。

爲了自動負載時,templater類將需要保持在include/Templater/Templater.php,它需要被命名爲這樣的: -

class Templater_Templater 
{ 
    //Class stuff 
} 

你會說它是你的模型或控制器這樣的: -

$templater = new Templater_Templater(); 

在此之前,但是會工作,你需要下面的行添加到您的application.ini文件: -

autoloadernamespaces[] = "Templater_" 

如果templater是您下載的外部類,與命名要求不匹配,並且您無法更改其名稱以適應自動加載器,那麼您需要在需要時包含該文件,儘管它仍然是最好的將其保存在包含的子目錄中。或者,如David Weinraub所指出的,您可以爲此create a custom autoloader

我假設您知道「包含」不是recommended directory structure for Zend Framework

+0

感謝您的鏈接,它大致表明,我必須將我的includes文件夾包裝在應用程序文件夾中,這沒有什麼大不了的。我的包含文件夾就像libraryfolder一樣。如果我完全錯了,你可以糾正我!我只是有時間快速瀏覽一下。 – Richard 2012-03-20 13:51:05

+0

我會檢查我是否實施它! – Richard 2012-03-20 13:55:36