PHP和案例敏感性

Man*_*ngo 38 php case-sensitive case-insensitive

在PHP中,变量和常量名称区分大小写,而函数名称则不区分大小写.

据我所知,PHP是发生这种情况的唯一语言.我使用的所有其他语言要么完全区分大小写,要么完全不区分大小写.

为什么PHP 部分区分敏感?

请注意,我不是问哪些名称区分大小写,而是为什么.

更新

我想我可以补充说,对于那些谁觉得我问的利益,下面的列表:

区分大小写

  • 字符串
  • 变量
  • 对象属性
  • 常量,默认情况下

不区分大小写

  • 关键词等
  • 功能
  • 对象方法
  • 常量,如果相应定义

注意:

  • 因此,课程是一个混合包:
    • class关键字是不区分大小写
    • 作为函数的类方法不区分大小写
    • 作为变量和常量的类属性区分大小写
  • 因为字符串区分大小写,所以依赖于字符串的任何内容(例如数组键和值)也都区分大小写

Abd*_*lam 30

区分大小写(用户定义和PHP定义)

  • 变量
  • 常量
  • 数组键
  • 类属性
  • 类常量

不区分大小写(用户定义和PHP定义)

  • 功能
  • 类构造函数
  • 类方法
  • 关键字和结构(if,else,null,foreach,echo等)

php.net中

基本

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

变量名称遵循与PHP中其他标签相同的规则.有效的变量名称以字母或下划线开头,后跟任意数量的字母,数字或下划线.作为正则表达式,它将表达如下:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'


一些有用的链接

  1. Userland命名指南
  2. 为什么PHP中的函数和方法不区分大小写?
  3. PHP函数区分大小写吗?
  4. PHP关键字区分大小写吗?
  5. PHP函数名称是否区分大小写?
  6. PHP案例敏感的来源

  • 对不起,但我必须发表评论,这绝不会回答这个问题.我没有问如何创建变量,或_which_名称区分大小写.我问_why_? (3认同)
  • 我想知道为什么总会有人在没有真正阅读整个OP的情况下及时复制粘贴部分手册...: - \这根本不是答案!我的答案是,这只是因为PHP是由更多的开发人员制作的,他们只是没有正确地进行通信,从而导致这种混乱的混乱.我的问题是如何禁用这种奇怪的行为?我发现变量名称中的区分大小写只是一个难以找到各种错误和错误的巨大机会.这种方法没有其他价值对不起...... (2认同)
  • 请记住,TRUE和FALSE也是不区分大小写的*,因为它们也是语言构造,从技术上讲不是常量,因为多个值可以相等。例如,“ 1 == TRUE”,““ xyz” == TRUE“,等等。 (2认同)

cmb*_*cmb 11

为什么PHP部分区分敏感?

我只能推测这源于非常早期的版本,可能是PHP/FI 2.0.该手册明确指出:

请记住,PHP/FI函数名称不区分大小写.

大多数用户输入(例如GET和POST参数)一直被注册为全局变量.将这些视为不区分大小写可能会导致问题,因此据推测所有变量都被视为区分大小写.

据我所知,这些是PHP/FI 2.0中唯一的标识符类型.所有其他的都是后来介绍的,显然是模仿不区分大小写的函数名.

常量,特殊,仅从PHP 4开始引入(PHP 3手册提到"常量",但现在这些常量称为"文字").出于一些神秘的原因(可能没有找到共识),已经决定允许常量标识符对define()开发人员的压缩区分大小写或不敏感.有趣的是,虽然define()默认为区分大小写的常量,但相应的C对应项(REGISTER_*_CONSTANT)默认为不区分大小写.