【问题标题】:why declare vars in class out site of constructor?为什么在构造函数的类外站点中声明变量?
【发布时间】:2011-03-21 11:55:35
【问题描述】:

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

class foo { 

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

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

我经常看到它,但我不确定它的作用,因为将它们排除在外似乎效果很好。

【问题讨论】:

  • 公共/默认变量不需要它。但显式声明提供了更好的概览。

标签: php oop class


【解决方案1】:

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

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


我看到声明属性至少有四个主要优点:

  • 您可以指定它们是 publicprotected 还是 private
  • 您的 IDE 会看到它们,并在您键入时将它们用作建议
    例如,下面的屏幕截图显示了 Eclipse PDT 在键入时如何提供帮助:

    (来源:pascal-martin.fr

  • 您可以在它们上添加一些 phpdoc——这意味着它们将出现在您的代码文档中(IDE 也可以在您键入时使用它来显示更好的建议-- 看我的截图)

  • 声明您的属性使您的代码更易于阅读:
    • 查看类的定义时,会立即看到使用了哪些属性:无需从构造函数中猜测(或任何其他方法)
    • 当然,在这里添加正确的 phpdoc 也有很大帮助。


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

【讨论】:

  • 更不用说它更容易阅读、调试并且看起来更漂亮:)
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2019-04-15
    相关资源
    最近更新 更多