PHPにおける変数名と関数名の大文字小文字の区別

PHPにおける比較演算子の精度については度々話題になる。特に
==
による比較については散々ネタにされつくされている。この曖昧な比較は、ユーザに手軽にプログラミングを行なって欲しいという想いがあってこそだと好意的に受け取るとしよう。

それはともかく、PHPは文字列を比較する時に、大文字と小文字を区別して比較するのだが、関数名に関しては別である。

  <?php
  function FOO(){
    echo "BAR";
  }

  function foo(){
    echo "bar";
  }

これを実行するとFatalエラーが発行されてPHPが止まる。理由は同じ関数名の二重宣言だ。
ちなみに、変数名はそれぞれ別々になる。

  <?php
  $FOO = "BAR";
  $foo = "bar";
  echo $FOO;

これは正常にBARと出力されるはずだ

つまり、PHPは、
変数に関しては大文字小文字を区別するが、
関数名に関しては大文字小文字を区別しない

ちなみにクラス名に関しては関数名と同じく区別しないようだ。

これから分かることは、名称が衝突しそうな汎用的なクラス名や関数名の宣言は、大規模開発だと思わぬタイミングで衝突してひどい目を、後々の誰かが見てしまうハメに陥ることがあるので、くれぐれも注意しよう。

ちなみに変数名や関数名などの名称というのはコードの可読性とダイレクトに関係するので、日頃から気をつけるといいかもしれない。


参考
PHP: 変数 - Manual
PHP: 関数 - Manual



ホントエライ目にあった……