定数は単純な値の識別子(名前)です。名前が示すように、スクリプトの実行中に値を変更することはできません (定数ではない、いわゆるマジック定数を除く)。定数はデフォルトで大文字と小文字が区別されます。通常、定数識別子は常に大文字です。
define() 関数を使用して定数を定義できます。 PHP 5.3.0 以降では、const キーワードを使用してクラス定義の外で定数を定義できます。以前のバージョンでは、const キーワードはクラス内でのみ使用できました。定数を一度定義すると、変更したり定義を解除したりすることはできません。
定数にはスカラー データ (ブール値、整数、浮動小数点、文字列) のみを含めることができます。 リソース定数を定義することは可能ですが、予期しない結果が生じる可能性があるため、これは避けてください。
定数の値は、名前を指定するだけで取得できます。変数とは異なり、定数の前に $ 記号を追加する必要はありません。定数名が動的である場合は、関数 constant() を使用して定数の値を取得することもできます。 get_define_constants() を使用して、定義されているすべての定数のリストを取得します。
定数と変数の違いは次のとおりです:
- 定数の前にドル記号 ($) はありません。
- 定数は代入ステートメントではなく、define() 関数でのみ定義できます。変数のスコープに関係なく、どこでも定義してアクセスできます。
- 一度定義した定数は再定義したり、定義を解除したりすることはできません。
- 定数の値はスカラーのみです。
- 例 #1 定数を定義する
2 | define( "CONSTANT" <?php"Hello world." ); |
3 | echo
// outputs "Hello world." |
4 | echo
// 输出 "Constant" 并发出一个提示性信息 |
Example #2 使用关键字 const 定义常量
2 | // 以下代码在 PHP 5.3.0 后可以正常工作 |
Example #3 合法与非法的常量名
03 | define( "FOO" 2 "something" ); |
04 | define( "FOO2" define("something else" ); |
05 | define( "FOO_BAR" "定数" "something more" ); |
07 | define( "2FOO" 、
「Hello world。」"something" ); |
08 | // 下面的定义是合法的,但应该避免这样做:(自定义常量不要以__开头) |
09 | // 也许将来有一天PHP会定义一个__FOO__的魔术常量 |
11 | define( "__FOO__" ); "something" ); |
🎜🎜🎜🎜🎜🎜3🎜🎜🎜🎜echo🎜🎜CONSTANT;
🎜🎜// 「Hello world」を出力します。🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜4🎜🎜🎜🎜echo🎜🎜定数;
🎜🎜// 「定数」を出力し、プロンプトメッセージを送信します 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜5🎜🎜🎜🎜?>🎜🎜🎜🎜🎜🎜🎜 🎜🎜例2 キーワード const を使用して定数を定義する🎜🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜🎜🎜<?php🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜2🎜🎜 🎜 🎜//次のコードは PHP 5.3.0 以降でも正常に動作します 🎜🎜 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜3🎜🎜🎜🎜const🎜🎜CONSTANT =
🎜🎜'Hello World'🎜🎜;🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜4🎜🎜🎜🎜エコー🎜🎜定数; 🎜🎜🎜5🎜🎜🎜🎜?> ;🎜🎜🎜 🎜🎜🎜🎜🎜🎜例 #3 合法的および違法な定数名🎜🎜🎜🎜🎜🎜🎜🎜🎜01🎜🎜🎜🎜<?php🎜🎜🎜 🎜🎜🎜🎜 🎜🎜🎜🎜🎜02 🎜🎜🎜🎜/ / 法的定数名 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜03🎜🎜🎜🎜define(🎜🎜"FOO"🎜🎜, )
🎜🎜「何か」🎜🎜);🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜04🎜🎜🎜🎜define(🎜🎜"FOO2"🎜🎜,
🎜🎜「何か他のもの」🎜🎜);🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜05🎜🎜🎜🎜define(🎜🎜"FOO_BAR"🎜🎜,
🎜🎜「もっと何か」🎜🎜);🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜06🎜🎜🎜🎜//不正な定数名🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜07🎜🎜🎜🎜 定義(🎜🎜「2FOO」🎜🎜,
🎜🎜"something"🎜🎜);🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜08🎜🎜🎜🎜// 次の定義は有効ですが、避けてください: (カスタム定数は __ で始まらない)🎜🎜 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜09🎜🎜🎜🎜// おそらく将来、PHP は __FOO__ 魔法定数を定義するでしょう🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜 🎜🎜10🎜🎜🎜 🎜// これコードと競合します🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜11🎜🎜🎜🎜define(🎜🎜"__FOO__"🎜🎜,
🎜🎜「何か」🎜🎜);🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜12🎜🎜🎜🎜?>🎜🎜🎜🎜🎜
PHP で定数を定義する場合、const とdefine の違い:
const を使用するとコードがシンプルで読みやすくなり、const 自体は言語構造であり、define は関数です。さらに、const はコンパイル中に定義するよりもはるかに高速です。
(1).const は、クラスのメンバー変数の定義に使用されます。一度定義すると、変更することはできません。 define はクラス メンバー変数の定義には使用できませんが、グローバル定数には使用できます。
(2).const はクラスで使用できますが、define では使用できません。
(3).const は条件文で定数を定義できません。
例:
2 |
const FOO = 'BAR' 1
// 无效的invalid
|
5 |
define( 'FOO' if 'BAR' ); // 有效的valid
|
(4).const采用一个普通的常量名称,define可以采用表达式作为名称。
2 |
for ( $i = 0; $i < 32; ++ $i ) {
|
(5).const只能接受静态的标量,而define可以采用任何表达式。
例如:
2 |
define( 'BIT_5' FOO = 'バー'// 有效的valid
|
(6).const定义的常量时大小写敏感的,而define可通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。
例如:
1 |
define( 'FOO' ;
'BAR' , true);
|
🎜🎜🎜🎜🎜🎜🎜🎜3🎜🎜🎜🎜} 🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜 🎜🎜4🎜🎜🎜🎜if🎜🎜(...) { 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜5🎜🎜🎜🎜 ) 🎜🎜define(🎜🎜'FOO'🎜🎜,
🎜🎜'BAR'🎜🎜); 🎜🎜// 有効有効🎜🎜🎜🎜🎜🎜🎜🎜🎜6🎜🎜🎜🎜} 🎜🎜🎜🎜(4).const は Ordinary を受け取ります定数名、定義では名前として式を使用できます。 🎜🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜🎜🎜const🎜 🎜FOO =
🎜🎜'バー'🎜🎜; 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜2🎜🎜🎜🎜for🎜🎜(🎜🎜$i🎜🎜= 0; 🎜🎜$i🎜🎜
関連関数:
define — 定数を定義します
説明:
bool define ( string $name ,mixed $value [, bool $case_insensitive = false ]
パラメータ:
name :定数名。
値: スカラーと null のみが許可されます。スカラーの型は、整数、浮動小数点数、文字列、またはブール値です。ただし、これは推奨されません。
case_insensitive: TRUE に設定すると、定数は大文字と小文字を区別しません (注: 大文字と小文字を区別しない定数です。
戻り値: TRUE)。成功、または失敗の場合は FALSE。
constant — 定数値を返します
説明:
混合定数 ( string $name )
Constant() は、名前によって定数の値を返します。定数の名前はわかりませんが、定数の値を取得する必要があります。つまり、定数名が変数に格納されているか、定数名が関数によって返されます。この関数は
class 定数でも機能します。
name: 定数名
定数が定義されていない場合は NULL を返します
説明:
bool が定義されています。
この名前の定数が定義されているかどうかを確認します。
注: 変数が存在するかどうかを確認したい場合は、defineisset() 関数を使用します。 関数が存在するかどうかを確認したい場合は、を使用します。 function_exists(). パラメータ:
name: 定数の名前 戻り値:
この名前の定数が定義されている場合は TRUE を返し、定義されていない場合は FALSE を返します。
すべての定数の名前とその値を含む連想配列を返します。
定数名と定数の値を連想配列で返します。これには、拡張機能およびdefine()関数によって作成された定数が含まれます。
以上、PHPにおけるconstとdefineの違い(補足)を、関連内容も含めて紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。