此问题在此处已有答案:
Why are functions and methods in PHP case-insensitive?(2个答案)
4年前关闭。
在PHP中,变量和常量名称是大小写敏感的,而函数名和类名则不是。
据我所知,PHP是唯一一种发生这种情况的语言,我使用过的所有其他语言要么完全区分大小写,要么完全不区分大小写。
为什么PHP partially case sensitive?
请注意,我不是问 * 哪些 * 名字是大小写敏感的,而是问 * 为什么 *。
更新
我想我可以补充一下,为了那些认为我在问 * 哪个 * 的人的利益,下面的列表:
区分大小写
- 字符串
- 变量
- 对象属性
- 常量,默认情况下
不区分大小写 - 关键词等
- 功能
- 对象方法
- 常数,如果相应定义
- 类名
注意事项:
- 因此,类是一个混合的袋子:
class
关键字不区分大小写- 对于声明、示例化和静态调用,类名不区分大小写
- 类方法是函数,不区分大小写
- 类的属性,作为变量和常量,是区分大小写的
- 因为字符串是区分大小写的,所以任何依赖于字符串的东西,比如数组键和值,也是区分大小写的
3条答案
按热度按时间0sgqnhkj1#
FYK(已更新)
区分大小写(用户定义和PHP定义)
不区分大小写(用户定义和PHP定义)
在php.net
基础知识
PHP中的变量是用美元符号和变量名来表示的,变量名是区分大小写的。
变量名遵循与PHP中其他标签相同的规则。有效的变量名以字母或下划线开头,后跟任意数量的字母,数字或下划线。作为正则表达式,它将表示为:
'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
修改
1.类常量总是区分大小写的。用const声明的全局常量总是区分大小写的。应该注意的是,这只适用于常量的短名称,而PHP中的命名空间总是不区分大小写的。用define()声明的常量默认情况下是区分大小写的
一些有用的链接
6tr1vspr2#
为什么PHP部分区分大小写?
我只能推测这源于非常早期的版本,可能是PHP/FI 2.0。manual明确指出:
请记住,PHP/FI函数名不区分大小写。
大多数用户输入,如GET和POST参数,一直被注册为全局变量,当时。将这些视为不区分大小写可能会导致问题,因此所有变量都被视为区分大小写。
据我所知,这些是PHP/FI 2.0中唯一的标识符类型。所有其他类型的标识符都是后来引入的,显然是模仿了不区分大小写的函数名。
常量是特殊的,只是在PHP 4中才引入(PHP 3 manual提到了“常量”,但这些现在被称为“文字”)。(也许没有达成共识),在开发人员的讨论中,已经决定允许常量标识符是
define()
d,大小写敏感或不敏感。有趣的是,而define()
默认为区分大小写的常量,相应的C对应项(REGISTER_*_CONSTANT
)默认为不区分大小写。bz4sfanl3#
区分大小写
变量,常量,数组键,类属性,类常量
不区分大小写
函数、类构造函数、类方法、关键字和构造(if、else、null、foreach、echo等)