0

我正在尝试为我的一个网站制作一个调试类,类似于 Java 中的记录器类。

<?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 回答