我正在尝试为我的一个网站创建一个调试类,类似于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
怎么了?
答案 0 :(得分: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);