PHPを書いているとたまに起きることがあるエラー「Notice: Constant ” already defined」
こちらは定数に関するエラーで、このエラーが検出されるとPHPの実行が停止します。
今回はこの「Notice: Constant ” already defined」エラーについて発生原因や対策方法を解説します。
目次から探す
「Notice: Constant ” already defined」が発生する原因
「Notice: Constant ” already defined」は同じ名前の定数を2回以上定義しているときに発生するエラーです。
例えば以下のコードは定数”SAMPLE”を2回定義しているため「PHP Notice: Constant SAMPLE already defined in…」のエラーになります。
<?php
define('SAMPLE',1);
define('SAMPLE',2);
?>
「Notice: Constant ” already defined」エラーは2回目に定義された行しかエラーでは教えてくれません。もう一つの定義場所は自分で調べる必要があります。
定数名のアルファベットの大文字小文字は区別されるため、以下の定数定義は有効です。
<?php
define('SAMPLE',1);
define('sample',2);
?>
読みは全く同じなので可読性が落ちますが、どうしても同名の定数を宣言しなければならないときは大文字小文字を使い分けましょう。
「Notice: Constant ” already defined」の対策方法
同じ名前の定数を2回以上書いてしまうということは以前同じ定数名を使用したことを忘れてしまっています。
ですので定数を宣言する際はdefine.phpなど定数宣言用のソースファイルを作成し、そちらにまとめてしまいましょう。
<?php
require_once('define.php')
//その他の処理
?>
このように外部ファイルに定数定義をまとめてしまえば、万が一同じ定数名を使ってしまった場合でも原因をすぐに特定できるでしょう。