PHP关键字区分大小写吗?

11
例如,下面的程序是否有意义,如果有,它应该打印什么?
<?php
FuncTIon fOo($x) { eChO $x; }
FOO('bar');
IF (TRuE) { echO 'qux'; }
?>

我的解释器运行它并打印barqux,这意味着关键字不区分大小写

$ php case_sensitive_keywords.php 
barqux
$ php --version
PHP 5.5.7-1+sury.org~precise+1 (cli) (built: Dec 12 2013 21:37:40) 

然而,去年有人问过同样的问题,答案表明关键字区分大小写的,与我的PHP解释器所显示的相矛盾!


@JohnConde 这真的是一份重复的问题吗?那个问题是关于函数的,而这个问题则是询问关键字。下面的答案深入细节解释了所有语言要素。 - Barmar
我认为这个问题被关闭只是因为它是一个愚蠢的问题(你可以通过实验轻松地回答它,就像你做的那样),而“不具建设性”是最接近的原因。PHP没有与实现分离的官方规范,只有一个实现,语言就是该实现所做的任何事情。 - Barmar
@jameshfisher [元数据] 是讨论特定问题和关闭的地方。我已经从你的问题中编辑掉了你的评论。我还建议你在评论和问题中避免使用脏话,因为它们可能会被删除。 - Duncan Jones
@Duncan,啊,我明白了。谢谢,我以后会用这个的。(“已关闭”通知应该更清楚地说明这一点。) - jameshfisher
3个回答

19

大小写敏感(用户定义和PHP定义)

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

大小写不敏感(用户定义和PHP定义)

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

这个答案可以通过将类名添加到不区分大小写的用法列表中来改进。 - Richard Smith

8

关键字不区分大小写。来自Lerdorf等人的《PHP编程》,第17页。

The names of user-defined classes and functions, as well as built-in constructs and keywords such as echo, while, class, etc., are case-insensitive. Thus, these three lines are equivalent:

echo("hello, world");
ECHO("hello, world");
EcHo("hello, world");

这也适用于命名空间吗?我的意思是,类似于“Nspace \ SubNamespace \ SubSubNamespace”、“nspace \ subnamespace \ subsubNamespace”和“NSpace \ SuBNameSpacE \ SUBsuBNamesPACE”的命名空间是等效的吗? - tonix
1
@tonix,它们在“内部”是不区分大小写的,但是如果您的文件系统区分大小写,则 PSR4 自动加载程序将无法找到大小写错误的文件,除非它们与内部命名空间或类名匹配。当将代码从 Windows 或 Mac 上载到 Unix 主机时,这是一个常见问题。 - scipilot

0
  1. 不,关键字不区分大小写。
  2. 类名和函数名也不区分大小写。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接