定数の定義
状態:-
閲覧数:7,511
投稿日:2010-04-26
更新日:2013-04-20
・「define("定数名", 値);」関数を利用して実施
定義済みの定数 / 拡張モジュールの「定義済み定数」
定義済みの定数
特徴
・「_(アンダーバー)」2個で囲まれている
・大文字と小文字を区別しない
2種類
1.PHPにアクセスする前から定義されているもの
2.PHPスクリプトにアクセスした時点で定義されるもの
1.PHPにアクセスする前から定義されているもの
1-1.コアの定義済み定数
1-2.標準の定義済み定数
2.PHPスクリプトにアクセスした時点で定義されるもの
定数 | 格納される値 |
---|---|
__LINE__ | この定数が書かれてある行番号 |
__FILE__ | ファイル名を含めた絶対パス |
__FUNCTION__ | 関数名 (PHP4.3.0以上) |
__CLASS__ | クラス名(PHP4.3.0以 上) |
__METHOD__ | クラスのメソッド名 (PHP5.0.0以上) |
function func1($line = __LINE__){//⑤この定数が書かれてある行番号
echo $line."
";//⑥
}
function func2(){//⑧
echo __FUNCTION__."
";//⑨関数名出力
}
func1(__LINE__);//①この定数が書かれてある行番号
func1(__LINE__);//②この定数が書かれてある行番号
func1(__LINE__);//③この定数が書かれてある行番号
func1();//④func1関数コール
//echo __FILE__."
";//ファイル名を含めた絶対パス。今回はコメントアウト
func2();//⑦func2関数コール
class CLASS1{
function func3(){
echo __CLASS__."
";//⑩クラス名出力
echo __FUNCTION__."
";//⑪関数名出力
echo __METHOD__;//⑫メソッド名出力
}
}
$obj = new CLASS1();
$obj->func3();
拡張モジュールの「定義済み定数」
拡張モジュールGDが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合の「定義済み定数」
IMG_JPG
IMG_PNG
定義済み定数IMG_PNG
変数と定数の相違点
何が違うの?
・変数が再定義出来るのに対して、定数は再定義が出来ない
・定数は変数の様に名前の前に「$(ドルマーク)」をおかない
・定数にはスコープ規則がなく、何処からでもアクセス出来る
・定数に配列は格納出来ない。厳密に言うと、定数に格納出来るのはスカラー値のみ
▼/define.html
define("AIR", "空気");//定数を定義するための内部関数「define()」は、第一引数に「定数名(文字列)」を、第二引数に「定数に格納する値」を、オプション(省略可)で第三引数に「定数名の大文字小文字を区別するか否かを表す真偽値(デフォルトでは「true」つまり区別する)」を指定
echo AIR;
echo "
";
echo air;//定数は、デフォルトでは大文字と小文字が区別されている。区別させないためには、第三引数に「false」を指定
echo "
";
define("AIR", "空気2");//定数の再定義は不可。但し、関数の様にエラーとはならない
echo AIR;
echo "
";
function air(){
echo AIR." (function)";//定数AIRへは、関数内からでも「修正子global」を使用しないでアクセスできる
echo "
";
}
air();
//define("AIRPORT", array("narita", "haneda"));//定数に配列は格納不可。コメントアウトを外すと、エラーメッセージが出力される