有问题的代码......
class MyClass
{
public $template_default = dirname(__FILE__)."/default.tpl";
}
为什么在定义对象属性时尝试使用dirname()
函数时会出现以下错误?
解析错误:语法错误,意外'(',期待','或';'在...中 blah blah blah
我猜对象属性与PHP变量不同。
答案 0 :(得分:4)
那是对的。来自docs:
此声明可能包含初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且不能依赖于运行时信息。为了评估。
由于dirname
是一个运行时函数,因此应该在Object的构造函数中调用它。因此,在对象构造函数中设置$template_default
:
class MyClass {
public $template_default;
public function __construct(){
$this->template_default = dirname(__FILE__). "/default.tpl";
}
}
答案 1 :(得分:1)
如果您使用的是PHP 5.6,则可以执行以下操作:
class MyClass
{
public $template_default = __DIR__."/default.tpl";
}
PHP 5.6允许在初始化(docs)中进行简单的标量数学和字符串连接,__DIR__
与dirname(__FILE__)
相同。
否则,德雷克斯'答案是对的。