1

エラーとエラーログを表示するために使用するクラスを作成しようとしています。

class CError {

//Error Logging

var $Log;

public function Log($Comment, $Detail = ""){

    $Log .= $Comment . "\n";

    if ($Detail !== ""){
        $Log .= "--" . $Detail . "--\n";
    }
}

public function Clear_Log(){
    $Log = "";
}

public function Display_Log(){
    echo $this->Log;
}

//Error Display

var $ErrorCode = array(
    0 => "0: No Error Code found, so either you got here by some rogue code or ...",
    1 => "1: General Error, if you are here something went wrong",
    2 => "2: Invalid information provided",
    3 => "3: Alternate path taken, check message for details",
    42 => "42: Here is your answer, but do you know the question?",
    50 => "50: You messed with the Creepers without your Diamond Sword, didn't you",
    9001 => "9001: Its over 9000... or more likely a value used was to large",
    418 => "418: I'm a Teapot, found the error that drove you crazy"
);

public function Error($Error = 0, $ShowLog = false){        

    if ($Error === ""){
        $Error = 0;
    }

    foreach ($ErrorCode as $key => $value){
        if($key == $Error){
            echo "<h3 style='color:red'>" . $value . "</h3><br />";
        }
    }

    if($ShowLog == true){
        echo $this->Log;
    }
}

}

これが私がエラークラスを使用する方法です

include 'CError.php';
$Error = new CError;

$Error->Log("Email is Required");
$Error->Display_Log();
$Error->Error(2,true);

問題は、使用しても何も表示されないことです。スキップされると思いますが、よくわかりません。サーバーのエラーログにアクセスできないため、エラーが発生しているかどうかはわかりませんが、コードはメインコードの出口ポイントまで実行されます(クラスとは関係ありません)。

- 編集 -

$Logを$this->Logで変更するように指示する回答により、$Log変数の問題が修正されました。foreachループに表示されるエラーコード配列の問題はまだ修正されていません。

- 編集 -

$this->ErrorCodeをforeachループに追加することで問題を解決しました。

4

3 に答える 3

1

$this->Log()inLogClear_Log()functionsのようなクラス変数にアクセスする必要があります。

試す:

public function Log($Comment, $Detail = ""){

    $this->Log .= $Comment . "\n";

    if ($Detail !== ""){
        $this->Log .= "--" . $Detail . "--\n";
    }
}

public function Clear_Log(){
    $this->Log = "";
}
于 2012-05-22T17:00:29.383 に答える
0

でアクセスするのと同じように$this->Log、メソッドLogで変更する必要があります。そして、ローカル変数にアクセスするだけです。Clear_LogDisplay_Log

于 2012-05-22T17:02:27.253 に答える
0

関数と変数の両方にLogという名前を使用しています。いずれかの名前を変更してみてください。

于 2012-05-22T17:05:04.227 に答える