【发布时间】:2011-05-01 10:49:37
【问题描述】:
在 PHP 类中声明属性的默认值时,您似乎不能使用串联。这是有原因的吗?
class Foo
{
public $property = __DIR__ . '/';
}
【问题讨论】:
在 PHP 类中声明属性的默认值时,您似乎不能使用串联。这是有原因的吗?
class Foo
{
public $property = __DIR__ . '/';
}
【问题讨论】:
见http://www.php.net/manual/en/language.oop5.properties.php
它们是通过使用关键字 public、protected 或 private 之一来定义的,然后是一个普通的变量声明。此声明可能包含一个初始化,但此初始化必须是一个常量值——也就是说,它必须能够在编译时进行评估,并且不能依赖运行时信息才能进行评估。
对于更复杂的初始化,使用构造函数
public function __construct()
{
$this->settings = __DIR__ . '/';
}
从 PHP 5.6 版开始,您可以在 PHP 中声明默认类属性时使用串联。见https://wiki.php.net/rfc/const_scalar_exprs。
这允许只接受静态值(const 声明、属性声明、函数参数等)的地方也能够接受静态表达式。
【讨论】:
您需要在 __constructor 中进行所有初始化。 IE。在 php5. 或者在最旧的 php4 中的 $this->class_name() 中。
【讨论】: