我試圖在Zend Framework 2中使用FirePHP,但似乎有些東西缺失。這裏是我試圖運行的基本代碼:在Zend Framework 2中使用FirePHP
$writer = new Zend\Log\Writer\FirePhp();
$logger = new Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info('FirePHP logging enabled');
我得到的錯誤是「FirePHP Class not found」。我最初感到困惑,因爲我的Zend/Log/Writer文件夾中有一個FirePhp類。但後來我看到類構造函數需要一個FirePhp \ FirePhpInterface對象。所以我檢查了Zend/Log/Writer/FirePhp文件夾,並且在那裏有一個實現FirePhpInterface的FirePhpBridge類,但是它在構造函數中也需要一個FirePHP實例。我的Zend/Log/Writer/FirePhp文件夾中沒有任何FirePHP.php文件。我應該從別的地方得到這個嗎?
更新
我現在設法得到FirePHP的工作,但我試圖找出如何做到這一點在這樣一個乾淨的方式工作的。我已經得到了它工作的唯一方法就是把它在我的項目的根目錄下,並執行以下操作:
include_once('FirePHP.php');
$writer = new Zend\Log\Writer\FirePhp(new Zend\Log\Writer\FirePhp\FirePhpBridge(FirePHP::getInstance(true)));
$logger = new Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info('FirePHP logging enabled');
我認爲平時我應該能夠創造像這樣一個作家:
$writer = new Zend\Log\Writer\FirePhp();
但是,如果出現錯誤,我相信是在Zend \ Log \ Writer \ FirePhp類的getFirePhp()函數中。該類做到這一點:
if (!$this->firephp instanceof FirePhp\FirePhpInterface
&& !class_exists('FirePHP')
) {
// No FirePHP instance, and no way to create one
throw new Exception\RuntimeException('FirePHP Class not found');
}
// Remember: class names in strings are absolute; thus the class_exists
// here references the canonical name for the FirePHP class
if (!$this->firephp instanceof FirePhp\FirePhpInterface
&& class_exists('FirePHP')
) {
// FirePHPService is an alias for FirePHP; otherwise the class
// names would clash in this file on this line.
$this->setFirePhp(new FirePhp\FirePhpBridge(new FirePHPService()));
}
這是我迷路,以我應該如何設置的東西,所以這class_exists(「FirePHP」)調用找到正確的類和新FirePHPService()也適用正常。
OK,所以我下載了FirePHP文件,並設法得到這個工作的「貧民窟」的方式。意思是,我做了一個include('FirePHP.class。PHP的')在我的引導文件,我可以通過創建一個這樣的作家運行的東西︰$ writer = new Zend \ Log \ Writer \ FirePhp(新的Zend \ Log \ Writer \ FirePhp \ FirePhpBridge(FirePHP :: getInstance(true)) );但我有點失落,我實際上可以像我的代碼的名字空間和利用Zend \ Di模塊一樣乾淨地工作。我在我的文章中添加了詳細信息。 – Rocket04