0

有什么方法可以确定服务器上是否安装了 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中有类似的东西吗?

4

3 回答 3

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 使用FirePHP它的类名,所以如果它可用,则应该定义该类


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

(!stream_resolve_include_path('FirePHPCore/fb.php')===FALSE)
于 2012-08-28T22:18:43.197 回答
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_pathsafe_include_path.

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

于 2012-08-28T22:21:09.487 回答
0

file_exists()可用于您的情况。

于 2012-08-28T22:20:13.737 回答