ホームページ > バックエンド開発 > PHPチュートリアル > phpにおけるconstとdefineの違い(補足)

phpにおけるconstとdefineの違い(補足)

WBOY
リリース: 2016-07-30 13:30:39
オリジナル
873 人が閲覧しました

定数は単純な値の識別子(名前)です。名前が示すように、スクリプトの実行中に値を変更することはできません (定数ではない、いわゆるマジック定数を除く)。定数はデフォルトで大文字と小文字が区別されます。通常、定数識別子は常に大文字です。

define() 関数を使用して定数を定義できます。 PHP 5.3.0 以降では、const キーワードを使用してクラス定義の外で定数を定義できます。以前のバージョンでは、const キーワードはクラス内でのみ使用できました。定数を一度定義すると、変更したり定義を解除したりすることはできません。

定数にはスカラー データ (ブール値、整数、浮動小数点、文字列) のみを含めることができます。 リソース定数を定義することは可能ですが、予期しない結果が生じる可能性があるため、これは避けてください。

定数の値は、名前を指定するだけで取得できます。変数とは異なり、定数の前に $ 記号を追加する必要はありません。定数名が動的である場合は、関数 constant() を使用して定数の値を取得することもできます。 get_define_constants() を使用して、定義されているすべての定数のリストを取得します。

定数と変数の違いは次のとおりです:

  • 定数の前にドル記号 ($) はありません。
  • 定数は代入ステートメントではなく、define() 関数でのみ定義できます。変数のスコープに関係なく、どこでも定義してアクセスできます。
  • 一度定義した定数は再定義したり、定義を解除したりすることはできません。
  • 定数の値はスカラーのみです。
  • 例 #1 定数を定義する

1
1 <?php

2define("CONSTANT"<?php"Hello world.");

3echo// outputs "Hello world."

4echo// 输出 "Constant" 并发出一个提示性信息

5?>

Example #2 使用关键字 const 定义常量

1 <?php

2// 以下代码在 PHP 5.3.0 后可以正常工作

3const'Hello World';

4echoCONSTANT;

5?>

Example #3 合法与非法的常量名

01 <?php

02// 合法的常量名

03define("FOO" 2"something");

04define("FOO2"define("something else");

05define("FOO_BAR""定数" "something more");

06// 非法的常量名

07define("2FOO"「Hello world。」"something");

08// 下面的定义是合法的,但应该避免这样做:(自定义常量不要以__开头)

09// 也许将来有一天PHP会定义一个__FOO__的魔术常量

10// 这样就会与你的代码相冲突

11define("__FOO__");"something");

12?>
🎜🎜🎜🎜🎜🎜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 は条件文で定数を定義できません。

例:

1 if(...){

2     constFOO = 'BAR'1// 无效的invalid

3 }

4 if(...) {

5     define('FOO'if'BAR'); // 有效的valid

6 }

(4).const采用一个普通的常量名称,define可以采用表达式作为名称。

1 const(...) 2'BAR';

2 for($i= 0; $i< 32; ++$i) {

3     define('BIT_'. $i$i);

4 }

(5).const只能接受静态的标量,而define可以采用任何表达式。

例如:

1 const定数// 无效的invalid

2 define('BIT_5' FOO = 'バー'// 有效的valid

(6).const定义的常量时大小写敏感的,而define可通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。

例如:

1 define('FOO'; 'BAR', true);

2 echoFOO; // BAR

3 echofoo; // BAR// 無効無効
🎜🎜🎜🎜🎜🎜🎜🎜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チュートリアルに興味のある友人の参考になれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート