受保护的$ _mdl和受保护的$ mdl之间的区别

时间:2013-05-14 20:04:17

标签: php security variables

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

class Administration extends Backend_Controller {

    protected $_mdl = 'model_comments';

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

    ...

}

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

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

我对这个“安全”问题不是很了解,所以任何解释都表示赞赏。

4 个答案:

答案 0 :(得分:7)

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

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

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

在其他语言中,您甚至可以看到Hungarian Notation等内容。

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

答案 1 :(得分:3)

$a$abc

之间的区别相同

答案 2 :(得分:3)

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

这是关于可见性的php手册

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

答案 3 :(得分:2)

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