PHP中常量的语法错误

时间:2012-11-30 21:39:36

标签: php syntax

我正在尝试为我的一个网站创建一个调试类,类似于Java中的logger类。

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

怎么了?

1 个答案:

答案 0 :(得分:3)

您不能在PHP中为类属性(变量)或常量添加逻辑。

来自documentation

  

这个声明可能包括初始化,但是这个   初始化必须是一个常量值 - 也就是说,它必须能够   在编译时进行评估,不得依赖于运行时   信息以便进行评估。


要设置此值,请使用__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);