为什么在PHP中加倍下划线(__)?

时间:2011-03-18 06:07:12

标签: php

以下是名称前面带有双下划线的许多函数:

__construct, 
__destruct, 
__call, 
__callStatic, 
__get, 
__set, 
__isset, 
__unset, 
__sleep, 
__wakeup, 
__toString, 
__invoke, 
__set_state 
__clone

我只需要知道为什么在这些函数之前使用这个下划线。

2 个答案:

答案 0 :(得分:34)

如上所述here

  

PHP保留所有函数名称   以__开头是神奇的。它是   建议您不要使用   PHP中带__的函数名,除非   你想要一些记录下的魔法   功能

长话短说,PHP称这些函数隐式,你不应该自己使用这个命名约定。

答案 1 :(得分:4)

Underscoritis。在PHP中,下划线已经在各个地方使用,例如作为$ _XYZ超全局中的前缀。

您列出的方法名称是魔术方法。为了使它们看起来更加特殊,它们以两个下划线为前缀。 - 当使用一个下划线作为公告已经过于普遍时,通常会发生这种情况。这种命名模式并不特定于PHP。

您仍然可以使用两个前导__来定义自己的函数,但不应该避免与真正的魔术方法或未来的语言扩展混淆。 (虽然这不太可能。)