×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今回は今更ながら define の使い方について紹介したいと思います。
この define ですがプログラム中で使う定数を定義するために使います。 重要な定数は意味のある名前で定義しておいて、それをプログラム中で使うことになります。
良くある使い方では、全体のシステムの中で、プログラムで使う定数は別ファイルにして一括で定義しておいて そのファイルをインクルードする様な感じになります。
define は以下の様に定義された命令(関数?)です。
[$booleanRet = ] define(string $constant_name, mixed $value, bool $case_insensitive = false); // $booleanRet(戻り値) : true(定義の結果がOK)、false(定義の結果がNG) // $constant_name : 定義名(文字列:英数字か_(アンダースコア)で、数字が使えるのは2文字目以降) // $value : 定義値(PHP5:スカラー値 (int、 float、string、bool あるいは null)) // (PHP7:配列データも可能) // $case_insensitive : 大文字と小文字の区別(true:区別無)
define の簡単なテストを行う為に以下のソースを実行させてみます。
■define の簡単なテスト
以下の例では、スカラー値の (int、 float、string、bool あるいは null) の6個の定数定義をテストしています。
<?php // 各定数定義 define('TEST_int' , 100); define('TEST_float' , 123.54); define('TEST_string' , 'ABCDEF'); define('TEST_bool_true' , true); define('TEST_bool_false', false); define('TEST_null' , null); // 定数表示 echo "<pre>"; var_dump(TEST_int); var_dump(TEST_float); var_dump(TEST_string); var_dump(TEST_bool_true); var_dump(TEST_bool_false); var_dump(TEST_null); echo "</pre>"; ?>
これを実行すると以下の内容がブラウザに表示されます。
int(100) float(123.54) string(6) "ABCDEF" bool(true) bool(false) NULL
■配列データ(array)を define で定義するテスト
<?php // array定数定義 define('TEST_array' , array("TEST001", "TEST222", "TEST333", "てすとAAA")); // 定数表示 echo "<pre>"; foreach (TEST_array as $val) { var_dump($val); } echo "</pre>"; ?>
これを実行すると以下の内容がブラウザに表示されます。
string(7) "TEST001" string(7) "TEST222" string(7) "TEST333" string(12) "てすとAAA"
■最初の例を eval() を使ってテストする
以下の例は define で定義された名前を配列に設定し、ループで処理しています。
<?php // 各定数定義 define('TEST_int' , 100); define('TEST_float' , 123.54); define('TEST_string' , 'ABCDEF'); define('TEST_bool_true' , true); define('TEST_bool_false', false); define('TEST_null' , null); // 定数表示 echo "<pre>"; $arr = ['TEST_int', 'TEST_float', 'TEST_string', 'TEST_bool_true', 'TEST_bool_false', 'TEST_null']; foreach ($arr as $name) { $strCmd = "var_dump($name);"; eval($strCmd); // PHP 命令を文字列で与えて実行する } echo "</pre>"; ?>
■define は再定義ができません
以下の例は define で再定義のテストを行います。<?php // 定数定義 define('TEST', 100); // 定数再定義 define('TEST', 'ABCEDF'); // 定数表示 echo "<pre>"; var_dump(TEST); echo "</pre>"; ?>
これを実行すると以下の様にブラウザに表示されます。 再定義の部分で警告メッセージが表示されました。
再定義など簡単なプログラムでは起きませんが、 各種の定義をまとめたファイルを別のところに置いておき、それをインクルードして使う場合、こういったことも起きるかもしれません。 さらにインクルードファイルが多くなればなるほど注意が必要だと思います。
Notice: Constant TEST already defined in C:\xampp\htdocs\_test\define-2.php on line 5 int(100)
PR
コメント