2012-08-01 126 views
1

加載類我在在標準的Zend Framework應用library倍有一個PHP庫(PHP Markdown)。加載文件及其所有類在我的模型和控制器中使用的最佳方式是什麼?如何在Zend框架

結構:

library/phpMarkdown/markdown.php 

注: PHP降價有一個非常難看的結構:它是唯一真正的「API」是一個簡單的功能,而不是一個類。所以優雅是沒有爲工作,這個確切的情況下,但對於問題的genearl解決方案正確命名的文件/類也是「正確的答案。

編輯 這麼多好的輸入這裏,真的不確定哪些回答我應該接受!感謝大家!

+0

僅供參考我用紡織品(不降價)庫及其結構/類名不與Zend框架自動裝載系統直接兼容。我不得不'Textile'把'Textile.php'文件中'庫/紡織/'文件夾和重命名類裏面'Textile_Textile'。是的,有點奇怪,但它的作品。也許你必須這樣做。 – 2012-08-01 20:31:55

+1

用於創建不在PSR-0標準的類的自定義自動加載的一個例子,看到http://stackoverflow.com/a/8820536/131824 – 2012-08-03 18:52:45

+0

那也是真正有用的,謝謝。哇這裏這麼多好輸入法... – wowpatrick 2012-08-04 10:08:39

回答

0

爲了保持簡單,只需要添加一個文件,你可以把這樣的事情在你的Bootstrap.php

protected function _initLoad(){ 
     Zend_Loader::loadFile('markdown.php', '/../library'); 

    } 

我只是複製markdown.php到應用程序庫,並把這個小功能,在程序的引導。如果你願意,你也可以使用Zend_Loader::loadClass();

+0

這工作得很好。但這意味着我可以全局訪問'markdown.php'中的所有函數/類,並且每次調用應用程序時都會加載它。 – wowpatrick 2012-08-03 12:45:28

+0

所以如果你不需要它的應用程序範圍,你可以把相同的代碼放在任何控制器的init()方法中,或者只是在一個動作中使用它 – RockyFord 2012-08-04 06:23:52

+0

嗯好吧知道! Thnaks! – wowpatrick 2012-08-04 10:07:11

2

The autoloader

只需實例化類和自動加載磁帶機應該找到它。如果沒有您需要添加命名空間和路徑。

+0

我已經在它一看,但我不能看着辦吧!你能舉個例子嗎? – wowpatrick 2012-08-01 20:22:40

+0

當然,你可以提供一些關於你的文件結構的更多信息嗎? – 2012-08-01 20:31:55

+0

完成。但我發現解決方案@RockyFord就好了。但是,如果您有任何要添加的內容,例如對於這種情況,你應該使用這個,一般來說,例如什麼是更有效率等等,將是偉大的! – wowpatrick 2012-08-03 12:44:20

2

如果您在下面的樹一類(爲例):庫/我的/ Tool.php

您將需要添加到您的application.ini:

autoloaderNamespaces[] = "My_" 

,然後在代碼您只要致電:

$tool = new My_Tool(); 

編輯:

文件中

Tool.php必須遵循的Zend命名修道院離子有這樣的事情:

<?php 

class My_Tool { 

} 

欲瞭解更多信息請參閱本:Zend Naming conventions

+0

這隻適用於'library/My/Tool中的類。php'被稱爲「工具」的權利?我不能讓它工作一些,但文件名與類名不一樣... – wowpatrick 2012-08-01 20:22:03

+1

Tool.php中的類必須命名爲My_Tool: – Oussama 2012-08-01 20:24:28

+0

很高興知道,謝謝! – wowpatrick 2012-08-03 12:42:25