私のサイトは完全にカスタマイズされているため、コードが適切に記述されていないことを知りたいと思っています。set_exception_handler と set_error_handler を使用して、カスタム クラスを使用してエラーをファイルに記録します。これには、通知と警告が含まれます。
私自身のコード内では、ログはほとんど取得されず、取得したログは実際に修正したいものであるため、これで問題ありません。
ただし、simplePie を使い始めたばかりで、PHP4 と互換性があるため、主に関数を静的に呼び出したり、参照渡しを誤ったりするなどの通知が大量に届きます。
simplePie を調べて修正するのは大変です。そうでなければ、最初からそれを使用することはなかったでしょう。
特定のファイルまたはクラスによって生成されたエラーを特に無視できる方法はありますか? 私の非常に基本的な例外処理の概要は次のとおりです。
set_exception_handler("CustomExceptionHandler"); set_error_handler("customErrorHandler"); /** * CustomExceptionHandler() * * これは、キャッチされない例外がスローされた場合に使用されます。 * * @param object $e オブジェクトとしての例外 */ function CustomExceptionHandler(Exception $e) { exitToError($e->getMessage()); } /** * customErrorHandler() * * これは、エラーのレベルに関係なく、すべてのエラーに対して呼び出されます。 */ function customErrorHandler($errno, $errstr, $errfile, $errline) { if(in_array($errno, array(E_USER_ERROR, E_RECOVERABLE_ERROR))) { throw new CustomErrorException($errstr, 0, $errno, $errfile, $errline); } そうしないと { CustomException::logError($errstr, $errno, $errfile, $errline); } FALSE を返します。 } /** * クラス CustomErrorException * * すべての致命的なものを変換するために custom_error_handler() によって使用されます * エラーから例外へ。 * * @custom_error_handler() を参照 * @http://www.php.net/manual/en/class.errorexception.php を参照 */ class CustomErrorException extends CustomException { /** * $重大度 * * 例外の重大度レベル * * @アクセス保護 * @var int */ 保護された $severity; /** * __construct() * * 新しい例外を構築します * * @access public * @param string $message 例外メッセージ * @param int $code 例外コード * @param int $severity 例外の重大度レベル * @param string $filename 例外がスローされたファイル名 * @param int $lineno 例外がスローされた行番号 */ public function __construct($message, $code = null, $severity = E_ERROR, $filename = null, $lineno= null) { $this->message = $message; $this->code = $code; $this->severity = (int)$severity; $this->file = $filename; $this->line = $lineno; self::logError($this->message,$this->code,$this->file,$this->line,$this->getTraceAsString()); } } /** * クラス CustomException * * 例外を上書きして、方法をより詳細に制御できるようにします * 例外が処理され、ログに記録されます。 * * @see http://www.php.net/manual/en/language.exceptions.extending.php */ class CustomException extends Exception { /** * __構造 * * すべての魔法を実行させたいので、親コントラクトを呼び出します。私たちはただ欲しい * このメソッドを上書きして、エラーを正確に記録できるようにします。 */ public function __construct($message, $code = 0, Exception $previous = NULL) { 親::__construct($メッセージ、$コード); self::logError($this->getMessage(),$this->getCode(),$this->getFile(),$this->getLine(),$this->getTraceAsString()); } /** * __toString() * * stringBuilder 関数を使用できるように、この関数を上書きします。 */ public function __toString() { return self::stringBuilder($this->getMessage(),$this->getCode(),$this->getFile(),$this->getLine(),$this->getTraceAsString()); } /** * stringBuilder() * * この方法を使用して、エラーを構築する標準的な方法を用意しています。 *何でも利用できる文字列。 * * @access public * @param string $message 例外メッセージ * @param int $code この例外に割り当てられたコード * @param string $file 例外が発生したファイル * @param int $line 例外が発生した行 * @param string $trace バックトレース */ public function stringBuilder($message, $code, $file, $line, $trace='') { // return "[".date("dMY H:i:s")."] ".$this->getMessage()." in ".$this->getFile().":".$this- >getLine()."\nスタック トレース:\n".$this->getTraceAsString()."\n"; return "[".date("dMY H:i:s")."] ".$message." in ".$file.":".$line."\n"; } /** * ログエラー() * *エラーを保存する標準的な方法があるように、メソッドを使用します * ログに。 * * 解析が容易な XML を使用します。 * * @access public * @param string $message 例外メッセージ * @param int $code この例外に割り当てられたコード * @param string $file 例外が発生したファイル * @param int $line 例外が発生した行 * @param string $trace バックトレース * @todo DomDocument を使用して xml ファイルに書き込むように改善できます * ここに記載されているとおり http://www.xml-training-guide.com/append-delete-data-from-xml-using-php.html */ public function logError($message, $code, $file, $line, $trace='') { //エラーを保存することを保証するために、標準のテキストファイルに保存します file_put_contents(ROOT_URL.ERROR_LOG_TXT,self::stringBuilder($message, $code, $file, $line, $trace),FILE_APPEND); } }
これは、simplePie がスローする 2 つのエラーの例です。
[01-Aug-2010 00:50:33] 参照による new の戻り値の割り当ては、***\SimplePie.php:738 で廃止されました。 [01-Aug-2010 00:50:34] 非静的メソッド SimplePie_Misc::parse_date() は ***\SimplePie.php:60 で静的に呼び出されるべきではありません