为什么在类的构造函数的网站中声明vars?

时间:2011-03-21 11:55:35

标签: php oop class

是否有充分的理由首先在构造函数之外声明类所使用的变量?

class foo { 

    var bar;  // why is this a good practice? (or could it be skipped?)

    public function __construct() {
        $this->foo = 'foobar';
    }
}

我经常看到它,但我不确定它是做什么的,因为似乎可以将它们排除在外。

2 个答案:

答案 0 :(得分:6)

在构造函数之外声明一个属性实际上声明它。

如果不这样做,则会在值受到影响时自动创建。


我认为声明属性至少有四个主要优点:

  • 您可以指定它们是 public protected 还是 private
  • 您的IDE会看到它们,当您键入时,它可以将它们用作建议
    例如,这是一个截图,显示Eclipse PDT在输入时如何帮助:
    http://extern.pascal-martin.fr/so/5377256-1.png
  • 你可以在它们上添加一些phpdoc - 这意味着它们会出现在你的代码文档中(当你输入时,IDE也可以使用它来显示更好的建议 - 请参阅我的截图)
  • 声明您的属性可让您的代码更易于阅读:
    • 在查看类的定义时,会立即看到使用了哪些属性:无需从构造函数(或任何其他方法)猜测
    • 当然,在这里添加适当的phpdoc也有很大帮助。


所以:是的,即使PHP接受未声明的属性,也应该声明它们。

答案 1 :(得分:1)

对于受保护和私有成员,您需要声明。对于公众,您可以离开,但为了更好的可读性,您应该声明每个成员。 大多数IDE也使用声明来提示帮助。

也许你也需要它来反思,但我不知道它是否有效,因为我从未试图离开宣言:)