是建议声明或未声明的PHP类变量?

时间:2014-08-25 03:27:18

标签: php class undeclared-identifier

采用以下示例:

 class MyThing {
      public function __construct($a, $b) {
           $this->a = $a; $this->b = $b;
      }
 }

PHP作者是否建议使用上述方法,或者使用$a$b声明private $a = "default"protected $b = "default"等?

3 个答案:

答案 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