Are PHP keywords case-sensitive?

2019-01-15 02:05发布

问题:

For example, is the following program meaningful, and if so what should it print?

<?php
FuncTIon fOo($x) { eChO $x; }
FOO('bar');
IF (TRuE) { echO 'qux'; }
?>

My interpreter runs it and prints barqux, implying the keywords are not case-sensitive:

$ 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) 

However, this same question was asked last year, and the answers say that keywords are case-sensitive, in direct contradiction to what my PHP interpreter appears to tell me!

回答1:

Case sensitive (both user defined and PHP defined)

  • variables
  • constants
  • array keys
  • class properties
  • class constants

Case insensitive (both user defined and PHP defined)

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


回答2:

No. Keywords are case-insensitive. Lerdorf et al., Programming PHP, page 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");