检查是否在PHP代码中安装了FirePHP

时间:2012-08-28 22:12:25

标签: php pear libraries firephp

有没有办法确定服务器上是否安装了FirePHP(通过PEAR)?我希望能够登录FirePHP,但也不要在没有该工具的情况下使每个人的代码崩溃。

这个例子,我认为它应该如何运作:

$message = "hello";
function log($message) {
    if (library_exists('FirePHPCore/fb.php')) {
        require_once('FirePHPCore/fb.php');
        ob_start();
        \FB::log($message);
    } else {
        SomeBoringLogger::log($message);
    }
}

我没有找到类似我的 library_exists 方法的内容。在PHP中有类似的东西吗?

3 个答案:

答案 0 :(得分:4)

@include_once('FirePHPCore/fb.php'); // Ignore any errors here, as we check for existance
if (class_exists('FirePHP')) { // Do something after this

http://php.net/manual/en/function.class-exists.php

FirePHP uses FirePHP as its class name,如果可用,则应定义该类


对于PHP 5.3.2或更高版本,请使用zerkms的建议:

(!stream_resolve_include_path('FirePHPCore/fb.php')===FALSE)

答案 1 :(得分:2)

使用include_once,因此它不会终止请求。正如@Brad建议的那样,之后使用class_exists

$message = "hello";

safe_include_once('FirePHPCore/fb.php');
if (class_exists('FB')) {
   function log($message) { 
      //using FirePHP
   }
} else {
   function log($message) {
      SomeBoringLogger::log($message);
   }
}

function safe_include_once($path) {
  if ($path = stream_resolve_include_path($path)) {
    include_once($path);
  }
}

[编辑]在stream_resolve_include_path中使用safe_include_path

[Edit2]更快的运行时记录。

答案 2 :(得分:0)

file_exists()可用于您的案例。