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

mik*_*eum 3 php oop class

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

class foo { 

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

    public function __construct() {
        $this->foo = 'foobar';
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Pas*_*TIN 6

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

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


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

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


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