プログラムでは通常初期値や演算結果を格納するために変数が用いられます。
変数とは別に、あとから変更する予定のない値を設定するためには、定数を使用します。
PHPでは、定数を指定する方法としてdefineとconstがあります。
この記事ではconstの、
・constとは?
・constの基本的な使い方
・constの注意点
という基本的な内容から、
・他の定数を代入する方法
・constで配列定数を定義する方法
・クラス外から定数を参照する方法
・defineで定数を定義する方法
などのconstの使い方に関して解説していきます。
今回はそんなconstを使用したさまざまな定数の定義方法について、わかりやすく解説します!
constとは
PHPで定数を定義する方法は、defineの他にクラス内で定義するオブジェクト定数であるconstがあります。
変数は何度でも値を変更することができますが、定数は一度設定した値を変更することができません。
定数は通常の変数と区別するために、基本的にアルファベットの大文字で記述するのが慣例となっています。
constによる定数の定義は、クラス内部でconstの後に定数名と値を指定します。
class クラス名{ const 定数名 = 値; }
constは通常の変数のように定数を定義することができますが、変数の先頭に$の記号は付けませんので注意しましょう。
クラス内からconst定数を参照するときには「self::定数名」の形式を指定する必要があります。
また、PHP5.6からはconstで配列定数を定義するともできます。
constで定数を定義する
ここでは、constで定数を定義する基本的な方法や注意点を解説していきます。
定数を定義する
以下にconstを使用した簡単な定数の指定方法を記述します。
先に説明したように、constはクラス内で定数を定義する必要があります。
<?php class ConstClass { //定数を定義する const CONSTSTR1 = 'Samurai'; const CONSTSTR2 = 'Engineer'; function showConst(){ echo self::CONSTSTR1; echo self::CONSTSTR2; } } $Class = new ConstClass(); $Class->showConst(); ?>
実行結果
SamuraiEngineer
紹介したサンプルでは、クラスConstClass内で定数を定義し、関数showConstでself::定数名の形式で定数を参照しています。
クラス内の関数を呼び出すには、クラス変数を定義し、$クラス変数->関数名の形式を記述します。
他の定数を代入する
constで定義した定数は、他の定数で定義した値を代入することも可能です。
他の定数を代入する場合は、以下のように記述します。
const 定数名1 = 値; const 定数名2 = クラス名::定数名1;
以下に他の定数から値を代入する方法を記述します。
<?php class ConstClass { //定数を定義する const CONSTSTR1 = 'Samurai'; const CONSTSTR2 = 'Engineer'; const CONSTSTR3 = ConstClass::CONSTSTR2; function showConst(){ echo self::CONSTSTR1; echo self::CONSTSTR3; } } $Class = new ConstClass(); $Class->showConst(); ?>
実行結果
SamuraiEngineer
constの注意点
constを使用した定数は、クラス内で定義する必要があるため、以下のようにクラス外で定義して参照しようとしても、参照エラーが発生します。
<?php const CONSTVAL = 10; echo self::CONSTVAL; class ConstClass { } ?>
エラー:
PHP Fatal error: Uncaught Error: Cannot access self:: when no class scope is active in〜
そのため、クラス外で定数を定義したい場合は、後述するdefineを使用する必要があります。
配列定数を定義する
PHP5.6からconstで配列定数を定義できるようになりました。
配列を定義する場合は、以下のように記述します。
<?php class ConstClass { //配列定数を定義する const FRUITS = ['apple', 'orange', 'melon', 'banana', 'pineapple']; function showConst(){ print_r(self::FRUITS); } } $Class = new ConstClass(); $Class->showConst(); ?>
実行結果
Array ( [0] => apple [1] => orange [2] => melon [3] => banana [4] => pineapple )
クラス外から定数を参照する
PHP5.3.0以降よりクラス外から定数を参照することが可能になりました。
以下にクラス外からconstで定義した定数を参照する方法を記述します。
<?php class ConstClass { //定数を定義する const FRUITS1 = 'apple'; const FRUITS2 = 'orange'; const FRUITS3 = 'melon'; } echo ConstClass::FRUITS1; echo '<br>'; $classname = 'ConstClass'; echo $classname::FRUITS2; echo '<br>'; $class = new ConstClass; echo $class::FRUITS3; ?>
実行結果
apple orange melon
サンプルでは3パターンのクラス外からconstで定義した定数を参照する方法を記述しています。
クラス名定数を::つなげて参照する方法、
クラス名を定義した変数と定数を::で参照する方法、
クラス変数に対して定数を::でつなげて参照する方法、
などで定数を参照することが可能です。
defineで定数を定義する方法
初めに説明したように、PHPで定数を定義するにはconst以外にdefineでも定義することが可能です。
defineで定数を定義するには、以下のように記述します。
bool define ( $定数名 , $値 [, bool $case_insensitive = false ] )
defineを使用した定数の定義方法は、以下の記事で詳しく解説していますので、ぜひ参考にしてくださいね!
まとめ
ここでは、constを指定したクラス定数の定義方法や注意点、クラス外から参照する方法などについて解説していきました。
PHPにはconstとdefineを使用して、定数を定義することが可能です。
クラス外で定数を定義するならdefine、クラス内で定数を定義するならconstと覚えておきましょう。
もしconstで定数を定義する方法を忘れてしまったら、この記事を思い出してくださいね!