1

我看到人们在变量之前使用下划线,即使他们使用关键字protected例如

class Administration extends Backend_Controller {

    protected $_mdl = 'model_comments';

    function __construct()
    {
         parent::__construct();
         $mdl = $this->_mdl;
         $this->load->model($mdl);
    }

    ...

}

如果我protected在变量之前使用,是否需要下划线?

$_mdl在 mdl like:而不是 just之前使用下划线有什么好处$mdl

我在这个“安全”问题上不是很好,所以任何解释都值得赞赏。

4

4 回答 4

7

这是一个命名约定。它用于显示属性的范围。无论是受保护的还是公共的。通过查看下划线,您知道如何访问类属性。

有点,(但不是真的),就像 __ 如何与诸如构造函数方法之类的魔术方法一起使用。

PHP 不关心你是否遵循这个约定。它对代码的解释方式没有影响。

在其他语言中,您甚至会看到诸如Hungarian Notation 之类的东西。

最后,没有真正的安全隐患。这完全取决于代码的可读性。

于 2013-05-14T20:06:11.663 回答
3

$a它与和之间的区别相同$abc

于 2013-05-14T20:08:17.547 回答
3

不需要下划线,它主要在 php4 中使用(因为除了 public 之外没有可见性功能)以直观地显示该变量是类中的私有变量。

这是关于可见性的php手册

http://us.php.net/manual/en/language.oop5.visibility.php

于 2013-05-14T20:13:07.107 回答
2

这不是一个安全问题,只是一种命名约定,旨在使识别非公共(受保护或私有)属性更容易识别。它对 PHP 没有任何意义,纯粹是为了美观。

于 2013-05-14T20:10:10.353 回答