考虑这些课程:
class Test_A {
protected $value;
public function __construct() {
$this->value = null;
}
}
class Test_B {
protected $value = null;
public function __construct() {
}
}
我想知道哪一个被认为是初始化对象属性的最佳实践以及原因。
两者在语法上都是正确的,根据PHP手册,只有在值不依赖于任何计算时才能声明属性(受保护的$ a = a + b;)。如果它确实依赖于某些计算或运行时值,则应在类构造函数中初始化它。
参考: http://www.php.net/manual/en/language.oop5.properties.php(参见示例#1)
记住这一点,除非确实需要计算,否则在声明时始终初始化属性是一个好习惯吗?
答案 0 :(得分:4)
如果它确实取决于某些计算或运行时值,则应该是 在类构造函数中初始化。
实际上,如果它取决于某些计算或运行时值,必须由构造函数初始化。 PHP 5.6 relaxes this restriction以便在编译时知道标量值的表达式将是合法的初始化器。
在声明时始终初始化属性是一种好习惯 除非他们确实需要计算?
当然,只要你有一个有意义的价值。如果您没有在声明中显式初始化它们,则会隐式设置为null
。