PHP函数中的下划线

Underscore in php function

当PHP函数名以下划线开头时,它意味着什么?

例如:__construct()

我知道这个构造的意思,但是我见过其他地方,函数以下划线或双下划线开头,我只是不确定其意义。


这意味着PHP隐式地调用它。

这叫做"魔法方法"

另外,它是两个下划线,而不是一个。

在这里了解更多:PHP魔术方法


在PHP中,以两个下划线开头的函数通常具有特殊含义。从手册中:

PHP reserves all function names
starting with __ as magical. It is
recommended that you do not use
function names with __ in PHP unless
you want some documented magic
functionality.

例如,construct()是一种特殊的方法,在初始化对象时自动调用。

另见:http://php.net/manual/en/language.oop5.magic.php


还有一个常见的命名"编码样式",它使用一个初始下划线来表示方法或属性是私有的/受保护的。我认为它相当广泛。


如其他答案所述,双下划线用于"魔法"方法。其想法是,用户不会故意使用两个下划线作为方法名,因此冲突的风险很小。我认为,它不是单个下划线的原因是,在"private"关键字用于强制OO隐私之前,单个下划线在过去是一种流行的私有方法约定。


在CodeIgniter中,如果在控制器中使用下划线启动方法,路由器将知道不允许从URL访问该方法。