Php 将FireHP与Zend Framework 2结合使用

Php 将FireHP与Zend Framework 2结合使用,php,zend-framework2,firephp,Php,Zend Framework2,Firephp,我试图将FireHP与Zend Framework 2结合使用,但似乎缺少了一些东西。以下是我尝试运行的基本代码: $writer = new Zend\Log\Writer\FirePhp(); $logger = new Zend\Log\Logger(); $logger->addWriter($writer); $logger->info('FirePHP logging enabled'); 我得到的错误是“未找到FireHP类”。起初我很困惑,因为我的Zend/Log/

我试图将FireHP与Zend Framework 2结合使用,但似乎缺少了一些东西。以下是我尝试运行的基本代码:

$writer = new Zend\Log\Writer\FirePhp();
$logger = new Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info('FirePHP logging enabled');
我得到的错误是“未找到FireHP类”。起初我很困惑,因为我的Zend/Log/Writer文件夹中确实有一个FireHP类。但是后来我发现类构造函数需要一个FireHP\FireHPInterface对象。因此,我检查了Zend/Log/Writer/FirePhp文件夹,其中有一个实现FirePhpInterface的FirePhpBridge类,但它还需要构造函数中的FirePhp实例。我的Zend/Log/Writer/FirePHP文件夹中没有任何FirePHP.php文件。我应该从别的地方得到这个吗

更新

我现在已经设法让FireHP工作了,但我正试图找出如何以一种干净的方式来工作,这样才能工作。我让它工作的唯一方法是将它放在项目的根目录中,然后执行以下操作:

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\FireHP类的getFireHP()函数。该类将执行以下操作:

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('FireHP')调用可以找到正确的类,新的FireHPService()也可以正常工作

我应该从别的地方得到这个吗

是的,您需要让FireHP进入您的项目并自动加载

如果您正在使用composer(我建议您这样做),只需添加:

"firephp/firephp-core" : "dev-master"

(或类似)并更新。如果您没有使用composer,您应该获取FireHP LIB,并让您的自动加载器知道它们。

首先,您应该将此代码添加到模块的Module.php中

    return array(
        //...
        'Zend\Loader\ClassMapAutoloader' => array(
                __DIR__ . '/autoload_classmap.php',
        ),
    );
这里是autoload_classmap.php的内容

<?php

return array(
    'FirePHP' => realpath(APPLICATION_PATH . '/vendor/FirePHP').'/FirePHP.php',
);

好的,我下载了FireHP文件,并设法让它以“贫民窟”的方式工作。也就是说,我在引导文件中添加了一个include('FirePHP.class.php'),我可以通过创建这样的编写器来运行:$writer=new Zend\Log\writer\FirePHP(new Zend\Log\writer\FirePHP\firephbridge(FirePHP::getInstance(true));但是我有点迷茫,不知道如何才能像我的其他代码一样干净地工作,这些代码是命名的,并且利用了Zend\Di模块。我正在我的帖子中添加详细信息。
use Zend\Log\Writer\FirePhp;
use Zend\Log\Logger;

    $writer = new FirePhp();
    $logger = new Logger();
    $logger->addWriter($writer);
    $logger->info("hi");