我們已經使用了Zend_Log,它在application.ini中針對不同的情況進行了不同的配置。我們初始化它/讓它在引導並存儲在註冊表中:在Zend Framework中開發/使用自定義資源插件
$r = $this->getPluginResource('log');
$logger = $r->getLog();
但是我們的子類Zend_Log進行(比如,Our_Log)添加自定義的功能,並希望得到同樣的方式。那麼我們必須製作一個新的資源插件。這似乎很容易 - 只需複製Application/Resource/Log.php,將文件重命名爲Ourlog.php,將該類重命名爲類Zend_Application_Resource_Ourlog。現在,我們不用擔心「Our_Log」這個類 - 只需使用新的Resource Plugin來獲取Zend_Log,以減少變量。
那麼,我們在引導新的代碼是:
$r = $this->getPluginResource('ourlog');
$logger = $r->getLog();
,但當然,這並不工作,錯誤的方法應用到非對象「R」。根據文檔,
「只要您爲此資源插件註冊前綴路徑,即可在您的應用程序中使用它。」
但是您如何註冊前綴路徑?這會有所幫助。但是這並不重要,我使用與默認相同的前綴路徑,並且我知道該文件正在被讀取,因爲我「需要」它。
無論如何,任何指導什麼簡單的步驟我失蹤將不勝感激。
感謝指針 - 如此接近,如此接近(我認爲)。我想我得到它...
好了,所以我改名爲類Xyz_Resource_Xyzlog,我把它放在library/Xyz/Resource/Xyzlog.php
然後,因爲我不愛INI文件中,我把引導:
$loader=$this->getPluginLoader();
$loader->addPrefixPath('Xyz_Resource','Xyz/Resource/');
$r = $this->getPluginResource('xyzlog');
if (!is_object($r)) die ('Not an object!!');
猝死。那麼,好吧,做ini:
pluginPaths.Xyz_Resource='Xyz/Resource/'
相同。沒有幫助。我相信插件路徑的基本路徑將包含PHP「include」路徑。我誤解了嗎?任何其他想法?我會高興地寫下最終在這種情況下爲我幫助其他可憐的靈魂的東西。可能與名稱空間有關?
+1。也只是對問題作者的一個提示,你不應該命名你的資源Zend_ *,因爲它是爲實際上是框架一部分的類保留的。從[命名約定](http://framework.zend.com/manual/en/coding-standard.naming-conventions。html)頁面:注意:*重要*:必須與Zend Framework庫一起部署的代碼,但不是標準或額外庫的一部分(例如未由Zend分發的應用程序代碼或庫)絕不能以「Zend_」開頭或「ZendX_」。 – drew010