PHP & 区分大小写

PHP & Case Sensitivity

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

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

为什么 PHP 部分 区分大小写?

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

更新

为了那些认为我在问 which 的人的利益,我想我可以添加以下列表:

区分大小写

不区分大小写

注:

区分大小写

variables, constants, array keys, class properties, class constants

不区分大小写

functions, class constructors, class methods, keywords and constructs (if, else, null, foreach, echo etc.)

仅供参考


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

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

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

  • 函数
  • class 构造函数
  • class 方法
  • 关键字和构造(if、else、null、foreach、echo 等)

php.net

基础知识

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

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


一些有用的链接

  1. Userland Naming Guide
  2. Why are functions and methods in PHP case-insensitive?
  3. Are PHP functions case sensitive?
  4. Are PHP keywords case-sensitive?
  5. Is PHP function names case-sensitive or not?
  6. Source of PHP Case Sensitive

Why is PHP partially case senstive?

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

Keep in mind that PHP/FI function names are not case sensitive.

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

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

从 PHP 4 开始才引入特殊的常量(PHP 3 manual 提到 "constants",但现在这些常量被称为 "literals") .出于某种神秘的原因(也许无法找到共识),已决定允许常量标识符 define()d 区分大小写或不区分大小写,这取决于开发人员的讨论。有趣的是,虽然 define() 默认为区分大小写的常量,但相应的 C 对应项 (REGISTER_*_CONSTANT) 默认为不区分大小写。