0

Java のロガー クラスに似た、Web サイトの 1 つのデバッグ クラスを作成しようとしています。

<?php

abstract class DebugLevel
{
    const Notice = 1;
    const Info = 2;
    const Warning = 4;
    const Fatal = 8;
}

class Debug
{
    private static $level = DebugLevel::Fatal | DebugLevel::Warning | DebugLevel::Info | DebugLevel::Notice;


}

?>

私は得るParse error

Parse error: syntax error, unexpected '|', expecting ',' or ';' in (script path) on line 13  

どうしたの?

4

1 に答える 1

3

PHP では、クラス プロパティ (変数) または定数にロジックを追加することはできません。

ドキュメントから:

この宣言には初期化が含まれる場合がありますが、この初期化は定数値である必要があります。つまり、コンパイル時に評価できる必要があり、評価されるために実行時の情報に依存してはなりません。


このような値を設定するには、__construct()関数を使用します。

class Debug {

    public $level; // can not be a constant if you want to change it later!!!

    public function __construct() {
        $this->level = DebugLevel::Fatal | DebugLevel::Warning | DebugLevel::Info | DebugLevel::Notice;
    }

}

または多分もっとエレガント:

class Debug {

    public $level; // can not be a constant if you want to change it later!!!

    public function setLevel($level) {
        $this->level = $level;
    }

}

次に、次の方法でこれを呼び出すことができます。

$Debug = new Debug();
$Debug->setLevel(DebugLevel::Warning);
于 2012-11-30T21:40:54.053 に答える