在 PHP 中,变量和常量名称区分大小写,而函数名称和类名称则不区分大小写。
据我所知,PHP 是唯一发生这种情况的语言。我使用过的所有其他语言要么完全区分大小写,要么完全不区分大小写。
为什么 PHP 部分区分大小写?
请注意,我不是问哪个名称区分大小写,而是问为什么。
更新
为了那些认为我在问which的人的利益,我想我可以添加以下列表:
区分大小写
不区分大小写
注:
class
关键字不区分大小写区分大小写(用户定义和PHP定义)
不区分大小写(用户定义和PHP定义)
在 php.net
基础知识
PHP 中的变量由美元符号后跟变量名称来表示。变量名区分大小写。
变量名称遵循与 PHP 中其他标签相同的规则。有效的变量名称以字母或下划线开头,后跟任意数量的字母、数字或下划线。作为正则表达式,它可以表示为:
'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
一些有用的链接
为什么 PHP 部分区分大小写?
我只能推测这源于非常早期的版本,可能是 PHP/FI 2.0。 手册明确指出:
请记住,PHP/FI 函数名称不区分大小写。
当时,大多数用户输入,例如 GET 和 POST 参数,始终被注册为全局变量。将这些变量视为不区分大小写可能会引起问题,因此据说所有变量都被视为区分大小写。
据我所知,这些是 PHP/FI 2.0 中唯一的标识符类型。所有其他的都是后来引入的,显然是模仿不区分大小写的函数名称。
常量是特殊的,从 PHP 4 开始才被引入(PHP 3 手册提到“常量”,但现在这些被称为“文字”)。由于某些神秘的原因(也许无法达成共识),开发人员决定允许常量标识符区分大小写或不敏感。有趣的是,虽然
define()
默认区分大小写常量,但相应的 C 对应项 (define()
) 默认不区分大小写。变量、常量、数组键、类属性、类常量
不区分大小写
函数、类构造函数、类方法、关键字和构造 (if、else、null、foreach、echo 等)