有没有办法确定服务器上是否安装了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中有类似的东西吗?
答案 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()
可用于您的案例。