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

use*_*729 103 php syntax case-insensitive

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

function ag()
{
    echo '2';
}

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

$instance = new test;
$instance->clme();
Run Code Online (Sandbox Code Playgroud)

但这不是变量的情况.理由是什么?

Sha*_*mar 94

让我引用采访 - PHP的创造者,Rasmus Lerdorf

PHP的第一个版本是一组简单的工具,我将它放在一起用于我的网站和几个项目.一个工具做了一些奇特的命中记录到mSQL数据库,另一个工具作为表单数据解释器.在我厌倦了它之前,我最终得到了大约30个用C语言编写的不同的小CGI程序,并将它们全部组合成一个C库.然后我写了一个非常简单的解析器,它将从HTML文件中选择标签,并用C库中相应函数的输出替换它们.

简单的解析器慢慢增长到包括条件标签,然后是循环标签,函数等.我认为我没有编写脚本语言.我只是在宏替换解析器中添加了一些功能.我还在用C编写所有真正的业务逻辑.

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

  • 我还记得拉斯穆斯在巴黎举行的PHP会议上引用的一句话或多或少地说:"我绝对不是一个优秀的程序员,遵循严格的编码规则或标准,但我可以说,如果你依赖于区分大小写要识别另一个功能名称,你会遇到严重的麻烦!"_ (64认同)
  • @dan,很多"好"程序员使用下划线.事实上,PSR-0故意不提出建议.一个优秀的程序员选择下划线或camelcase并坚持这个惯例.做出这种选择衡量一个人是否是一个优秀的程序员是非常愚蠢的. (13认同)
  • 这就是为什么php程序员在命名函数时使用下划线而不是camelcase的原因. (4认同)
  • @ paperstreet7有些人这样做.好的没有.至少,不再了. (2认同)

Pas*_*TIN 34

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

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

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



作为参考,本手册各页的几个链接/引用:

对于函数(引用):

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

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


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

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

对象属性不仅仅是对象中的变量 - 与PHP 4和向后兼容性相同.