受保护的属性用下划线前缀(Protected properties prefixed with un

2019-09-21 08:13发布

喜欢:

public
  $foo        = null,
  $bar        = 10;

protected

  $_stuff     = null,
  $_moreStuff = 5;

很多人似乎做到这一点。 为什么?

这不是不一致的命名(如一些PHP函数:))?

Answer 1:

它真的可以归结为一点:个人喜好。

我个人而言,我也是一个谁使用该命名约定。 前缀是什么protectedprivate以下划线,无论是一个变量或函数,让我和其他的程序员谁我经常与知识的工作,该变量是全球性的,并不会是当前类/上下文的外部访问。

一个例子可以帮助阐明用例将与类方法:

class Example {
    public function firstFunction() {
        // do stuff
    }

    protected function _secondFunction() {
        // do more stuff
    }
}

当我在写一个使用类的代码Example ,或类本身的容器内工作,如果我看到_secondFunction()我会立刻知道,它不是一个公共职能,因为出发的_ ,从而不是类的外部访问; 没有必要去找到实际的函数声明,看到了修改。 在另一面,我就知道firstFunction()是公开的,因为它没有一个开始。



Answer 2:

这是一个从PHP5之前时代的旧约定。

PHP4只有公共的知名度,并以某种方式的人希望能够判断一个属性,就是要公共或私人(同样为方法)。 表示私有成员或方法的下划线前缀,不意味着从外部使用。

虽然严格来说,它是不必要与PHP5,在那里你可以明确地标记类成员的可见性,这一惯例仍是常见的。 用户认为,这使得略读代码更容易,因为你可以马上看到,如果你还可以调用该函数从外部与否。 这是最多的个人喜好,或者给定项目的编码风格。



Answer 3:

下划线是象征性意味着变量有一些特殊的属性(这是预定的,并能因组织或程序员改变程序员)。 传统上这意味着什么是不公开的。 即使功能有时写为:

protected function _myProtectedFunction(){}

但也注意到,PHP开始保留所有函数名__ (两个下划线)的神奇,所以建议您不要使用与函数名__在PHP,除非你想记录一些神奇的功能。



Answer 4:

相比较而言,Python没有设计有私人/公共和使用下划线沟通的区别。 见PEP 8的这一部分:

http://www.python.org/dev/peps/pep-0008/#designing-for-inheritance

所以,它并不一定只是一个老PHP5预先约定-人们可以故意这样做是为了同样的原因Python做。



Answer 5:

这是最肯定只是个人喜好。 他们可能做到这一点,因为$ _GET和$ _SESSION像在PHP已经完成。



文章来源: Protected properties prefixed with underscores