我看到人们在变量之前使用下划线,即使他们使用关键字 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
?
我对这个“安全”问题不是很了解,所以任何解释都表示赞赏。
答案 0 :(得分:7)
这是一个命名惯例。它用于显示属性的scope。无论是受保护还是公开。通过查看下划线,您知道如何访问类属性。
有点,(但不是真的),就像__如何与魔术方法一起使用,例如构造函数方法。
PHP并不关心您是否遵循此约定。它对代码的解释方式没有影响。
在其他语言中,您甚至可以看到Hungarian Notation等内容。
最后,没有真正的安全隐含。这完全取决于您的代码的可读性。
答案 1 :(得分:3)
与$a
和$abc
答案 2 :(得分:3)
不需要下划线,它主要用于php4(因为除了public之外没有可见性功能),以直观地显示变量是类中的私有变量。
这是关于可见性的php手册
答案 3 :(得分:2)
这不是一个安全问题,只是一个旨在使识别非公共(受保护或私有)属性更容易识别的命名约定。它对PHP没有意义,纯粹是为了美学。