【问题标题】:About PHP underscore naming convention (as in "_method" or "_property")关于 PHP 下划线命名约定(如“_方法”或“属性”)
【发布时间】:2011-08-11 14:08:32
【问题描述】:

这是我一直想知道的一种一般性调查。我通过其他人的代码注意到了很多这种情况,但从来没有真正知道真正的原因,只是跟随趋势,所以这里。

为什么有些方法和属性的名称前加下划线,而有些则没有? 例如,具体何时使用function _method(),何时使用function method(),或者换句话说,private $_someVariableprivate $someVariable

【问题讨论】:

    标签: php naming-conventions php-5.3


    【解决方案1】:

    以防万一,新 PSR-12 说它不得有下划线:

    https://www.php-fig.org/psr/psr-12/

    4.3 属性和常量 属性名称不得以单个下划线作为前缀来表示受保护或私有可见性。

    4.4 方法和函数 方法名称不得以单个下划线作为前缀来表示受保护或私有可见性。

    【讨论】:

      【解决方案2】:

      ***遵循 PSR-2 编码指南:

      属性名称不应以单个下划线为前缀 指示受保护或私有可见性`

      来源:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md

      ***原因:

      属性名称前没有下划线,例如 $_income,而是使用 $收入。下划线在某些框架中使用过,可以 与 PHP 魔术变量混淆。

      来源:http://www.geekgumbo.com/2013/05/19/psr-2-coding-style-guide/

      【讨论】:

        【解决方案3】:

        这是offical document from php.net private 方法、private 字段之前的下划线立场。

        但请关注Zend Framework coding convention:

        对于使用 private 或声明的对象上的方法 protected修饰符,方法名的第一个字符必须是 一个下划线。这是唯一可接受的应用程序 方法名称中的下划线。声明为“公共”的方法永远不应该 包含下划线。

        因此,我们应该开始用下划线命名private 方法:)

        注意:

        PHP 将所有以 __ 开头的符号保留为魔法符号。它是 建议不要在 PHP 中创建以 __ 开头的符号 除非您想使用记录在案的神奇功能。

        (来源:http://php.net/manual/en/userlandnaming.rules.php

        【讨论】:

          【解决方案4】:

          现在,在 2013 年,这是 PSR-2 编码指南“正式”地“坏”风格

          属性名称不应以单个下划线作为前缀来表示受保护或私有可见性`

          来源:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md

          【讨论】:

          • 这个约定背后的原因是什么?我一眼看不到任何东西。
          • @w5m 我不知道,但你可以问 PSR 人,他们通常会非常快速且公开地回答问题(他们在某处有一个“谷歌小组”)。
          【解决方案5】:

          大多数时候,它是 PHP4 的一种回归约定,它不支持属性或方法的可见性,库开发人员使用 _ 来表示应该被视为私有的东西,而不是直接从外部访问班级。 PHP5 确实具有可见性,但仍经常保持约定。

          【讨论】:

          • 从未意识到这是其背后的原因,感谢分享。我确实发现它很有帮助并且仍然使用约定,但是它允许私有方法与公共方法“共享”名称,并使它们突出一点。
          • @Madmartigan - 这当然意味着从类中调用私有方法或访问私有属性也可以立即识别
          • 我明白了,谢谢!这是一个有用的见解。我会坚持这个约定,我觉得它既实用又自然。
          猜你喜欢
          • 1970-01-01
          • 2011-03-13
          • 2012-04-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-27
          相关资源
          最近更新 更多