0

大きな問題があります。Web アプリケーションで発生したエラーを保存しようとしています。たとえば(一例にすぎません)、ゼロ除算を行ったり、クエリでエラーが発生した場合などです。それで、それをキャッチしてデータベースに保存したいと思います。しかし、CakePHP の handleError は静的なので、$this->MyModel->saveError(...) は使えません。

私の /app/Lib/AppError.php には、次のものがあります。

class AppError extends ErrorHandler
{
     public $uses = array('Errors.Error');

     public static function handleError($code, $description, $file = null, $line = null, $context = null)
     {
         //This print the error:
         echo "Code: ".$code." Description: ".$description." File: ".$file." Line: ".$line."<br>";
         //I want to do this, (save to the database):
         $this->Error->saveError($code, $description, $file, $line);

     }
}

$this->Error->saveError($code, $description, $file, $line); がなければ 動作しますが、エラーを表示したいだけではありません。例などが必要だと思います。私を助けてください。よろしくお願いします。ありがとう... PD: 英語ですみません、私は英語の学生です...

4

1 に答える 1

0

handelError関数を静的関数として定義したため、変数$thisは存在しません。静的環境は参照先のオブジェクトを認識できず、そのクラス名しか認識できないためです。静的環境では、self::の代わりに使用する必要があります。$this

self::Error->saveError($code, $description, $file, $line);

これは、プロパティErrorを宣言する必要があることも意味しstaticます。

于 2012-10-03T18:17:31.063 に答える