0

サイトの単純なログ ファイルを作成する単純なクラスを作成しています。何らかの理由で、関数の外に変数 file_path があると、このエラーが発生します...

Parse error: parse error, expecting `','' or `';''

このコードで..

class Logger {

public $file_path = SITE_ROOT.DS.'logs'.DS.'log.txt';

public static function log_action ($message="") {
    if (file_exists($file_path)) {
        file_put_contents($file_path, $message, FILE_APPEND);
    } else {
        return "could not write to log file";
    }
}

ただし、変数が関数内にある場合、このエラーは発生しません。どうしてこれなの?

public static function log_action ($action, $message="") {
    $file_path = SITE_ROOT.DS.'logs'.DS.'log.txt';
    if (file_exists($file_path)) {
        file_put_contents($file_path, $message, FILE_APPEND);
    } else {
        return "could not write to log file";
    }
4

1 に答える 1

2

クラス内では、メソッド外で実行できる PHP コードは制限されています。

クラス メンバー [...] は、キーワード public、protected、または private のいずれかを使用して定義され、その後に通常の変数宣言が続きます。この宣言には初期化が含まれる場合がありますが、この初期化は定数値である必要があります。つまり、コンパイル時に評価できる必要があり、評価されるために実行時の情報に依存してはなりません

プロパティから。

したがって、これは無効です。

public $file_path = SITE_ROOT.DS.'logs'.DS.'log.txt';
于 2013-04-28T17:08:51.330 に答える