采用以下示例:
class MyThing {
public function __construct($a, $b) {
$this->a = $a; $this->b = $b;
}
}
PHP作者是否建议使用上述方法,或者使用$a
或$b
声明private $a = "default"
和protected $b = "default"
等?
答案 0 :(得分:3)
如果您知道变量将存在,那么是的,明确声明它是个好主意。有时您会想要创建一个PHP类,它将拥有未声明的动态成员,但绝大多数时候您将知道类将使用的变量,因此将通过显式声明来创建更易读,可维护的代码它们。
我可以去找一篇关于PHP作者推荐的内容的答案"但实际上你应该问的问题是"这是一个好主意" - 并且不,故意留下未声明的变量并不是一个好主意。它很草率,以后会再次咬你。
答案 1 :(得分:1)
将它们声明为这样会好得多:
class MyThing {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
}
能够将新属性添加到单个对象"即时"可能很有用,但只应在您无法提前预测需要的属性名称的情况下使用。首先,所有这些属性都成为公共属性(为了encapsulation的目的,在许多情况下保持属性私有更好。)如果在整个地方声明新属性,它还会使类中的代码更不易读。
答案 2 :(得分:0)
您应声明每个变量(或在对象,属性中清晰显示),否则如果您尝试访问由于尚未设置的值而不存在的属性,则可能抛出异常。
如果您不知道是否需要保护该属性等,则可以将每个属性定义为private
。