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ます。

[編集2]より高速なランタイムロギング。

于 2012-08-28T22:21:09.487 に答える
0

file_exists()あなたのケースに使用することができます。

于 2012-08-28T22:20:13.737 に答える