PHPプログラミングを行う上で、定数が定義されているかをチェックしたい場合、defined関数を使います。defined関数は、条件分岐などで活用できる便利な関数です。
そこで今回は、defined関数の使い方について解説していきます。また、defined関数とセットで覚えておきたい関数も紹介していくので、ぜひご覧ください。
目次
PHPのdefined関数とは
PHPのdefined関数とは、指定した名前の定数が存在するかを調べる関数です。
単純に定数名のチェックに使うこともありますが、定数の存在有無を条件分岐の判定に使うのが一般的な利用方法です。
なお、変数の存在チェックには「isset関数」を使い、関数の存在チェックには「function_exists関数」を使います。使い分けが必要となるので、間違えて覚えないように注意しましょう。
PHPのdefined関数の書き方
PHPプログラミングでdefined関数は、次のように記述して使うことできます。
1 |
defined ( string 定数名 ) |
defined関数は、指定した定数名が定義されている場合には「true」を返し、定義されていない場合には「false」を返します。なお、指定するのは定数ではなく、定数名であることに注意しましょう。
PHPのdefined関数を使って定数を確認する
それでは実際に、PHPのdefined関数を使って、定数が定義されているかの確認をしてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php //定数を定義 define("MAXSIZE", 100); echo 'MAXSIZE:'; if (defined ("MAXSIZE")) { echo MAXSIZE; } else { echo "未定義"; } echo '<br>'; echo 'MINSIZE:'; if (defined ("MINSIZE")) { echo MINSIZE; } else { echo "未定義"; } echo '<br>'; ?> |
MINSIZE:未定義
上記サンプルコードでは、定数「MAXSIZE」は定義していますが、定数「MINSIZE」は定義されていません。そのため、defined関数の引数に「MAXSIZE」を指定した場合には「true」を返しますが、引数に「MINSIZE」を指定した場合には「false」を返します。
定数はdefine関数で定義する
前述したように、PHPで定数を定義したいときはdefine関数を使用します。そこで、define関数の使い方についても、簡単に紹介していきましょう。
1 |
define ( string 定数名 , 定数の値 , [大文字と小文字の区別フラグ] ) |
define関数の第一引数には定数名を指定し、第二引数にはその定数に定義する値を指定します。
第三引数にtrueを指定すると定数名の大文字と小文字を区別しなくなりますが、こちらは非推奨です。基本的には省略して、定数名の大文字と小文字を区別するようにしましょう。
なお、定数名は大文字で表記することが一般的です。PHPプログラミングの暗黙のルールといってもいいでしょう。
それでは、実際にdefine関数で定数を定義したときの動作についても確認してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php define('AAA', 'A'); define('BBB', 'B', true); echo '定数AAAの出力' . '<br>'; echo AAA . '<br>'; echo aaa . '<br>'; echo '定数BBBの出力' . '<br>'; echo BBB . '<br>'; echo bbb . '<br>'; ?> |
A
定数BBBの出力
B
B
上記の通り、定数「AAA」に定義した値は、定数「aaa」では出力されず、実際にはエラーが返ってきます。しかし、定数「BBB」には第三引数で「true」を指定しているので、定数値の出力が行われます。ただし、こちらも非推奨の使い方なので、実際には警告メッセージが出力されます。
PHPのconstant関数で定数値を取得する
PHPのdefined関数は、定数が定義されているかのチェックをできます。しかし、定数の値を取得することはできません。そこで、もし定数の値を取得したい場合には、constant関数を使って、定数の値を取得するようにしましょう。
それでは実際に、constant関数を使って定数の値を取得してみます。
1 2 3 4 5 6 7 8 9 10 |
<?php //定数を定義 define("MAXSIZE", 100); echo '定数指定:' . MAXSIZE; echo '<br>'; echo 'constant関数:' . constant("MAXSIZE"); ?> |
constant関数:100
上記のサンプルコードの通り、constant関数を使って定数を値を取得し、出力することができました。
しかし、上記のコードではconstant関数を使う意味がないと感じるかもしれません。実際にconstant関数を使うのは、定数名が定まっていない場合などに使うのがおすすめです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php class test1 { const CHAMPION = '山田くん'; } class test2 { const CHAMPION = '鈴木さん'; } $const = 'CHAMPION'; echo '第1回 チャンピオン:' . constant('test1::' . $const); echo '<br>'; echo '第2回 チャンピオン:' . constant('test2::' . $const); ?> |
第2回 チャンピオン:鈴木さん
上記サンプルコードの通り、constant関数を使うことで定数名を簡単に指定することが可能になりました。もっと複雑な処理になれば、ループ処理内で指定する定数名を変えて、多くの定数の値もまとめて取得できます。
ただし定数名やクラス名など、ソースコードのルール付けがしっかりと決められたプログラムでなければ、上手く活用するのは難しいかもしれません。
まとめ
PHPのdefined関数を使えば、定数が定義されているかのチェックを行うことができます。
defined関数の書き方は、引数にチェックしたい定数名を指定するだけなので、簡単に使うことができます。一般的な使い方としては、条件分岐などで利用されている関数です。
なお、定数を定義するときにはdefine関数を使い、定義された定数の値を取得したいときにはconstant関数を使います。これらの関数を理解し、使いこなすことができれば、プログラマーとして、1つ上のレベルに上がることができるでしょう。