有问题的代码…
class MyClass
{
public $template_default = dirname(__FILE__)."/default.tpl";
}
为什么在定义对象属性时尝试使用dirname()
函数时会出现以下错误?
解析错误:语法错误,意外'(',期待','或';'在…废话废话
我猜对象属性不像PHP变量。
没错。来自文档:
这个声明可以包含一个初始化,但是这个初始化必须是一个常量值——也就是说,它必须能够在编译时求值,并且不能依赖于运行时信息来求值。
由于dirname
是一个运行时函数,它应该在Object的构造函数中调用。因此,在对象构造函数中设置$template_default
:
class MyClass {
public $template_default;
public function __construct(){
$this->template_default = dirname(__FILE__). "/default.tpl";
}
}
如果您使用的是PHP 5.6,您可以做以下操作:
class MyClass
{
public $template_default = __DIR__."/default.tpl";
}
PHP 5.6允许简单的标量数学和字符串连接初始化现在(文档),__DIR__
是一样的dirname(__FILE__)
。