为什么PHP中的函数和方法不区分大小写?


107

PHP中的函数和方法不区分大小写,如以下示例所示。

function ag()
{
    echo '2';
}

Ag();
class test {
    function clMe()
    {
        echo 'hi';
    }
}

$instance = new test;
$instance->clme();

但这不是变量的情况。有什么根据?


161
PHP不需要臭气熏天的理由!
Max Shawabkeh

2
“因为汤人这么说。” 没有理由,但请参考:php.net/manual/en/functions.user-defined.php(在示例3和4之间),php.net
manual/en/

2
class Share{ share($str){ echo $str; } } $sh = new Share(); $sh->share("string");您可能会惊讶地看到两次调用函数share($ str)。第一个是因为c'tor,第二个是出于相同原因的显式调用!
vivek.m 2011年

1
@outis,“汤人”是什么意思?
Pacerier,2014年

1
@outis,您指的是Seinfeld的“纳粹汤”。 YouTube维基百科
Kevin Traas 2015年

Answers:


98

让我引用访谈– PHP的创建者Rasmus Lerdorf

PHP的第一个版本是一组简单的工具,我将它们组合在一起用于我的网站和几个项目。一种工具可以很好地记录到mSQL数据库,另一种则充当表单数据解释器。在我厌倦了用C编写的大约30个不同的小CGI程序之前,我将它们全部组合到一个C库中。然后,我编写了一个非常简单的解析器,该解析器将从HTML文件中挑选标记并将其替换为C库中相应函数的输出。

简单的解析器逐渐发展为包含条件标记,循环标记,函数等。我认为我从来没有在编写脚本语言。我只是在宏替换解析器中添加了一些功能。我仍在用C编写所有真实的业务逻辑。

我在某处读到,由于引入的所有函数在本质上都感觉像HTML文档中的标记,并且HTML标记不区分大小写,因此他在PHP中选择的函数名称不区分大小写。稍后,此功能仍保留在语言中。


66
我还记得Rasmus在巴黎举行的PHP会议上的一句话,或多或少地说道:“就遵循严格的编码规则或标准而言,我绝对不是一个好的程序员,但是我可以说,如果您要区分大小写,从另一个函数中识别出一个函数名,您就遇到了严重的麻烦!”
汤姆·德斯

1
将来仍然不区分大小写吗?
vee 2014年

4
这就是为什么php程序员在命名函数时使用下划线而不是驼峰式。
paperstreet14年

2
@ paperstreet7有些。好人没有。至少现在不再如此。
2015年

13
@dan,许多“优秀”程序员都使用下划线。实际上,PSR-0故意没有提出建议。一个好的程序员会选择下划线或驼峰字母,并遵守该约定。做出这样的选择来衡量某人是否是一个优秀的程序员是很愚蠢的。
jdp 2015年

34

是的,函数和方法名称不区分大小写。

是的,变量名称区分大小写。

我不确定这是有原因的-除了这种方式已经存在很长时间了,出于向后兼容的原因,情况仍然如此。



作为参考,有两个指向手册各个页面的链接/引号:

对于功能引用

注意: 函数名称不区分大小写,尽管通常是调用函数的好形式,因为它们出现在声明中。

方法不仅仅是对象中的函数-尤其是当我们考虑PHP 4和向后兼容性时。


并且,对于变量(引用):

PHP中的变量用美元符号表示,后跟变量名称。变量名称区分大小写。

对象属性只不过是对象中的变量而已,关于PHP 4和向后兼容性的说明相同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.