webcode-labサイトロゴ

  • お問い合わせへのリンクバナー

Webcode Laboratory
for website coding & program & seo;

Topics

この Blog CMS について

【PHP define()定数定義は大文字で!】 将来、推奨されなくなり禁止されるdefine()のケース・インセンシティブ定数【php7.2 php7.3 php8】


rss

PHPの定数定義define()の、ケース・センシティブ定数とケース・インセンシティブ定数

PHPの定数定義「define」は、
定義する際に慣習的にも一般的にも、「大文字」で書くのが暗黙ルールですが、
php7.1現在まで「小文字」でも書けて、defineの第三引数で「TRUE」を設定すると、
定数の「大文字/小文字を区別しない」ようになってしまい、呼び出す際に大文字/小文字の区別されず呼び出せてしまいます。

なぜならPHPでは、ケース・センシティブ(大文字と小文字を区別した)定数もケース・インセンシティブ(大文字と小文字を区別していない)定数も、PHP7.1バージョン現在サポートされているためです。

おかしいことになりますよね。。。
大文字の定数と小文字の定数で、別の値を設定するなんておかしなことはしてはいけないはずなので、
この「defineの第三引数」が近い将来に削除される方向みたいです。
 

 

ケース・インセンシティブ定数(大文字と小文字を区別していない)は、php7.2から推奨されなくなり「警告」表示、php8から削除!

php7.2や7.3では、ケース・インセンシティブ定数(大文字と小文字を区別していない)が推奨されなくなり「警告」が出て、

Deprecate and Remove Case-Insensitive Constants

php8ではケース・センシティブ(大文字と小文字を区別した)定数のみに限定されます。
define()で定義された定数は、原則ケース・センシティブでなければならないようになるということ。


どうしたらいいかというと、今から、

  • 「大文字」でdefine()の定数定義をすること
  • define()の「第三引数」は使用しない

ようにしておきましょう、という当たり前のようなお話デシタ。


ページの先頭へ

rss