PHPによる定数の作成は、constとdefine()です。 チャーム定数Phpグローバル定数

ゴロフナ / Korisne PZ

コンスタンティ--tse値、yakіzm_nyuyutsyah時間。 より多くのVの学校、歌う、あなたは多くの定数を知っています、例えば、数 P、 番号 e、秋などでごめんなさい。 私、osozumіlo、プログラミングするとき、あなたはしばしば入力の必要性を非難します 定数。 私はそれらのヤクについて PHPで定数を作成してツイストします、この記事についてお話します。

あなたと一緒に行きましょう 定数を作成しましょう数字 P:

define(PI、3.1415926);
エコーPI;
?>

オペレーター 定義作成 絶え間ない PIіnadєїй値 3.1415926 。 この定数を演算子で導きましょう エコー。 すべてが単純ですが、推奨事項は1つしかないため、常に実行するように指示できます。 Obov'yazykovo書き込み 定数素晴らしい手紙。 それらのschobtsebulo obov'yazkovo、alevkraibazhanoではありません。 Іだけでなく受け入れられた PHP、alethおよびその他のmovahtezh。

Zrozumіlo、zgodom 定数を変更する PIはできません(私が勝った人のために 絶え間ない).

それでは、1つの関数を、それを逆にするかのように見てみましょう。 " 与えられた定数に割り当てられたChi"。次の​​スクリプトを書いてみましょう。

if(!defined( "PI"))define(PI、3.1415926);
エコーPI;
?>

ここ 定数の底を変更する PI。 そして、私は方法がわかりません(tobto define()関数向きを変えた false)、次に定数も初期化します。 見せてみましょう。

ヤクバカイト、あなた自身を作成し​​、振動させます PHPの定数-それは本当に簡単です。

私、nasamkinets、それについてお話ししたい PHP定数の新進。 簡単なスクリプトを書いてみましょう。

phpinfo();
?>

終わりに近づくєsplit" PHP変数「ヴラスネ、わからない 定数、しかし、悪臭を放つ 定数スクリプトを与えられた時間vykonannyaをpіd。 Zrozumіlo、pіdhourvykonannyaіnshoyスクリプトはvzhematimutіnshiznachennya(usі、zrozumіlo)を悪臭を放ちます。 いくつかお会いしましょう 定数、それで、悪臭がより頻繁に打たれたとしても、あなたは彼らと一緒に練習する方法を理解しました:

echo $ _SERVER ["REMOTE_ADDR"];
エコー "
";
echo $ _SERVER ["QUERY_STRING"];
?>

このスクリプト私たちは KoristuvachのIPアドレス、スクリプトを実行すると、次の行に水の行が表示されます(たとえば、「 index.php?id = 7")少し楽しみにしていますが、私たちがグローバルで実践していることは何ですか 配列$_SERVER。 配列を使用しても学習できますが、他のプログラミング言語で配列を使用したことがある人は、問題なく構文を認識できると思います。 他の人はどうした 定数、その後、ロボットは同様の方法でそれらを操作します。

constキーワードとdefine()関数の使用でPHP定数に違いがある理由を見てみましょう。

PHPの定数は「定数」であり、その意味は1回だけ指定され、その後は変更できません。 値を変更しようとしても、値は変更されず、PHPに表示されません。注:定数はすでに定義されています:

Define( "FOO"、 "val"); define( "FOO"、 "val2"); //注意:定数はすでに定義されていますecho FOO; ///> val

PHPで定数をdeafenする方法は2つあります。

// 1 define( "NAME"、 "VALUE"); // 2 const NAME = "VALUE";

PHPのスキンバージョンでどのように変化したか、すべてを段階的に見ていきましょう。

定数の作成方法

PHPが5.3未満

PHP 5.3より前は、定数はdefine()を介してのみ定義できました。 constキーワードは、バージョン5.3で導入されました。

定数はより少ないスカラーを節約できます。 スカラーの変更-整数、浮動小数点、文字列、ブール型のすべての変更。 型配列、オブジェクト、およびリソースはスカラーではありません。

//スカラーdefine( "FOO"、10); define( "FOO"、10.9); define( "FOO"、 "val"); define( "FOO"、true); //スカラーではありませんdefine( "FOO"、array(1)); //定数は挿入できず、警告である必要がありますdefine( "FOO"、(object)array(1)); //定数は設定されていません、オプションです警告

PHP5.3バージョンから

それが登場しました キーワード constは、追加のヘルプの代わりに使用できるようになりました。

ただし、constは関数を変更できません。それ以外の場合は異なりますが、「中間なし」のスカラーを渡す必要があります。

Const FOO = "val"; //許しはありませんconstFOO= $ var; //エラーを解析しますconstFOO= home_url(); //エラーを解析しますconstFOO= 5 + 10; //エラーconstFOO="foo"を解析します。 "バー"; // パースエラー

同様に、define()の場合、そのような制限はありません。

Define( "FOO"、 "val"); //許しはありませんdefine( "FOO"、$ var); //許しはありませんdefine( "FOO"、home_url()); //許しはありませんdefine( "FOO"、5 + 10); //許しはありませんdefine( "FOO"、"foo"。"bar"); //許しはありません

PHP 5.6

const値でプリミティブPHPvirazi(スカラーからのvirazi)を指定することが可能になりました:

Const FOO = 1 + 2; const FOO="foo"。 "バー";

配列を定数で保存することが可能になりました:

Const FOO =; // define( "FOO"、);を練習します // PHP 5.6で動作しない、PHP7.0で動作する

define()とconstの違い

#1 const

define()の観点では、constは最上位スコープで耳をつんざくようにする責任があるため、スクリプトのコンパイル時に悪臭が表示されます。 これは、ブロックの場合、またはtry / catchブロックの場合、functions / loops/divsの途中で音声を発することができないことを意味します。

If(1)(const NAME = "VALUE"; //該当なし)//それ以外の場合if(1)(define( "NAME"、 "VALUE"); //有効)

#2 const

constは常に大文字と小文字を区別しませんが、define()を使用すると、大文字と小文字を区別しない定数を作成できます。

Define( "NAME"、 "VALUE"、true); エコーNAME; //VALUEエコー名; // 価値

#3constマインドレススカラー

同じことがPHP5.6以下のバージョンにも当てはまります。

constをchange、functions、viraziに渡すことはできませんが、define()は次のようになります。

Const FOO = $ var; //エラーを解析しますconstFOO= home_url(); //解析エラーdefine( "FOO"、$ var); //許しはありませんdefine( "FOO"、home_url()); //許しはありません

#4 constは、PHP 5.6から配列を保存し、PHP7.0から定義できます

const FOO =; // PHP 5.6以降define( "FOO"、); // PHP 5.6で動作しない、PHP7.0で動作する
ポッドバッグ

許しを「台無しにする」可能性が多く、オプションが少ないため、define()を使用して定数を定義することをお勧めします...非難-PHP 5.6バージョンを使用していて、定数の配列を保存する必要がある場合は、その後、constが役立ちます。

コンスタンティPHPクラス

Goloshuyusyaはヘルプconstのために少なくなります。 それらのルールは上記のとおりです。スカラーのみを取得し、理解しない PHPの変更、関数、virazi .. ..

永久に上品でいつまでもアクセス可能-プライベートまたは保護されたステータスはありません。

定数はクラス自体に属することに唖然とします。同じオブジェクトに属するのではなく、クラスのすべてのオブジェクト(primirniki)の後にspilnoїします。

Class My_Class(const NAME = "VALUE"; // PHP 5.6以降、数学変数をハックできますconst SEC_PER_DAY = 60 * 60 * 24; function print_name()(//メソッドの途中でselfを介してクラス定数を呼び出す(クラス自体)echo self :: NAME;))//クラスごとに一定のポーズを呼び出す//インスタンスをクラスに初期化せずにグローバルスコープから呼び出すことができるecho My_Class :: NAME;

クラスの定数は、クラスの静的累乗に似ています。

クラスMy_Class(const NAME = "VALUE"; static $ name = "VALUE" ;;)echo My_Class :: NAME; エコーMy_Class::$ name;

「魅力的な」定数

最後に、特別なPHP定数について話しましょう...

PHPには9つの魅力的な定数があり、悪臭が勝利するという文脈の誤謬でそれらの値を変更します。 たとえば、__ LINE__の値は、定数が指定されているスクリプトと同じ行に配置する必要があります。 すべての「魅惑的な」定数は、次の1時間のコンパイルで許可されるため、極端な定数のために、コンパイル時間で許可されます。 特殊定数は大文字と小文字を区別せず、ホバリングのリストは以下のとおりです。

絶え間ない 説明
__ライン__ ファイルの現在の行番号。
__ファイル__ 新しいパスは、定数を呼び出すストリームファイルの名前です。
__DIR__ PHP5.3.0。 ファイルへのディレクトリ、選択解除された定数。 dirname(__ FILE__)と同じです。 たとえば、スラッシュは使用しないでください。クリミアはルートディレクトリです。
__働き__ 関数の名前。
__クラス__ クラスに名前を付けます。 Tse im'yaは、名前の広がりの名前、de class buv voices(たとえば、Foo \ Bar)に復讐します。 同じことが特性にも当てはまります。 vikoristannіメソッドがtreytіvєіm'yamクラスである場合、tsіメソッドはvikoristovuєtsyaです。
__TRAIT__ PHP5.4.0。 Im'ya特性。 なぜ私は名前の空間の名前を復讐しなければならないのですか?そこには声の声の特徴があります(たとえば、FooBar)。
__方法__ クラスメソッドに名前を付けます。
__NAMESPACE__ PHP5.3.0。 名前のストリーミングスペースに名前を付けます。
ClassName :: class PHP 5.5.0名前クラスの外(割り当てられた名前の範囲から)。 また不思議に思う:クラス。

定数-単純な値のtse識別子(im'ya)。 名前が大きいため、スクリプトの終了時にその意味を変更することはできません(魔法の定数があり、定数です)。 プロモートされた定数名では大文字と小文字が区別されます。 賞賛のために、定数の名前は常に大文字で書かれています。

これらの定数は、PHPの他の名前と同じように、同じ命名規則に一致させることができます。 正しくim'yapochinaєєєєєєєзлітеріまたはpodkreslennyaの記号。これは、podkreslennyaの文字、数字、記号の数に続くものです。 定数の名前の正しさをチェックするための正規表現は次のようになります:^ * $

補助機能に定数を割り当てることができます 定義()予約されているか、間違った名前で名前が付けられており、その値は関数を介して(のみ)削除できます 絶え間ない()。 保護にはお勧めしません。

例1正しい定数名と間違った定数名

//定数名を修正します
define( "FOO"、 "should");
define( "FOO2"、 "more");
define( "FOO_BAR"、 "もっと行く");

//間違った定数名
define( "2FOO"、 "should");

//唖然とする方が正しいですが、ヨガよりも優れています。それを打ち負かさないでください。
// PHPは、char定数を1回だけ登録できます。
//ロボットスクリプトを壊す方法
define( "__ FOO__"、 "should");

?>

尊敬: ここで「文学」を理解する-tse 文字a〜z、A-Z、および128〜255(0x80-0xff)のASCIIコードを持つその他の文字。

2年前

定数のパフォーマンス。 PHP 7.1.10 32ビット(Opcacheアクティブ、Windows 10 i7-64ビット)ですが、傾向は5.xと同じです。

DEFINE( "CNS"、value)によって宣言された定数を使用:0.63575601577759s
const CNS = valueによって宣言された定数を使用:0.61372208595276s
$ v = valueで宣言された変数を使用:0.51184010505676s

真ん中のDEFINEとCONSTのバリアントは、DEFINEの代わりにCONSTの最も完全なバリアントと同じです。 ただし、変数を使用する方が、定数を使用するよりも約10〜50%優れています。 したがって、効率的なタスクのために、定数は最良のオプションではありません。

$ p1 = microtime(true);
$ x = 0;
for($ i = 0; $ i<50000000;$i++) {
$ x + = CNS;
}
$ p2 = microtime(true);

14年前

未定義の定数は、正しく使用されていない場合にtrueと評価されます。 たとえば、次のようなものがあったとします。

settings.php
// デバッグモード
define( "DEBUG"、false);
?>

test.php
include( "settings.php");

if(DEBUG)(
//機密データをエコーし​​ます。
}
?>

password.phpフラグが有効になっておらず、DEBUG定数が設定されていない場合、PHPは機密データを出力します。 解決策はそれを評価することです。

settings.php
// デバッグモード
define( "DEBUG"、0);
?>

test.php
include( "settings.php");

if(DEBUG == 1)(
//機密データをエコーし​​ます。
}
?>

これで正しく動作します。

ロボットプログラムのストレッチによって変更されるため、変更が手に負えないほど達成された場合、曲の意味が絶えず保存されるという変動があります。 このような値は、数学定数、ファイルへのパス、さまざまなパスワードなどです。 これらの目的のために、PHP自体はそのような構造を転送されました。

名前付きの値は、プログラミング(スクリプト)のプロセスによって変更されないため、呼び出されます。

PHPでは、定数が関数に割り当てられます 定義()。 この関数の形式は次のとおりです。

定義 ($ name, $ value, $ case_sen)、de:

$ name-Im'ya定数;
$ value-定数の値。
$ case_sen-ブール型の非拘束パラメータ、
以下が正しいレジスタ文字(true)であるかnі(false)であるかを指定します。

PHP定数がどのように変更されるかの例:


echopi;
//3.14を表示
?>

パラメータ設定方法 $ case_sen dorivnyuє true、その後、インタプリタは定数を使用して作業時間の記号のレジスタを変更します。 定数が前向きな記号なしで勝利することを尊重する $ .

定数と変更の間のV_dminnosti:

    定数には、ドル記号のような接頭辞がありません( $ );

    定数は、追加機能にのみ割り当てることができます 定義()、しかし、chiは重要ではありません。

    定数は、可視領域を上げることなく、どこにでも割り当てて使用できます。

    最初の誹謗中傷の後、定数を指定したり無効にしたりすることはできません。

    定数のスカラー値を少なくすることができます。

定数のベースを再確認する

定数の基礎を確認するには、関数を使用できます defined()。 この機能はオンになっています true yakscho一定の声。 例を目指します:

//円周率定数を気絶させる
define( "pi"、3.14、true);
if(defined( "pi")== true)echo 「一定の円周率は耳が聞こえません!」;
// Vivedeスクリプト「一定の円周率は唖然とします!」
?>

PHPの一定のズーム

PHPには、次の定義済み定数があります。

PHPには、スキンスクリプト定数の優れたリストがあります。 これらの定数の多くは異なるモジュールによって割り当てられ、これらのモジュールは動的な引力または静的な折りたたみの結果として使用可能であるため、その場合にのみ存在します。

5つのzumovlenih定数、yakіzmіnyuyutsvoєznachennyaは、文脈の中で古くなっており、悪臭を放つvikoristovuyutsyaです。 たとえば、定数 __ライン__定数が指定されているスクリプトの行にデポジットします。 特殊定数は大文字と小文字を区別せず、ホバリングのリストは以下のとおりです。

イムヤ 説明
__ライン__ ファイルの現在の行。
__ファイル__ Povniyパスとストリームファイルの名前。
__DIR__ ライブラリファイル。 インクルードのいずれかがある場合、インクルードファイルのインクルードファイルが更新されます。 これはdirname(__ FILE__)と同等です。 このディレクトリ名は、ルートディレクトリでない限り、スラッシュで追跡することはできません。
__働き__ 関数の名前。 (PHP 4.3.0で追加されました。)
__クラス__ クラスに名前を付けます。 (PHP 4.3.0で追加されました。)
__TRAIT__ 特性名。 トレイト名には、booが宣言した名前空間が含まれます(例:Foo \ Bar)。
__方法__ クラスメソッドに名前を付けます。 (PHP 5.0.0で追加)
__NAMESPACE__ ストリーム名前空間の名前。

ドダトコボ

私の発言では、定数についての言及があります。 プログラミング言語と驚異の言語での定数の非常に理解によってどのように分類するのですか、それらはどのようにうまくいくのですか? PHPの定数.

PHPの定数と定数を理解する

定数という言葉は、数学ではすでにおなじみかもしれません。

「数学定数-その価値は変化しています。」

PHPでも同じです。 PHP定数– tse識別子。コードの変換プロセスでは変更できないため、単純な値(行、数値など)を識別するのに役立ちます。

定数(その値に割り当てられている)の耳をつんざくようなものの場合、関数は勝ちます 定義。 無声定数の例:

PHPの定数名では大文字と小文字が区別されます(大きい文字と小さい文字は異なります)ので、注意してください。 また、定数の名前は常に大文字で表記してください。

Im'ya定数は、文字、または下付き文字「_」の記号から開始でき、文字、数字、およびサブクラスで構成できます。

定数を使用する簡単な例を見てみましょう。

このアプリケーションでは、彼らはプログラムで定数とvicoristalsїїを声に出しました。

定数は今や勝利を収めていますが、なぜ変化を勝利するのが簡単ではないのですか?

割り当てられているため、定数はプログラムを終了する過程でその値を変更できません。 データベースへのアクセスの詳細(ホスト、koristuvachのログインとパスワード、データベースの名前)、サイトのディスクへの転送、その他の多くのパラメーターなど、サイトのpostパラメーターを定数で保存します。

私たちがvikoristovuvatimemoを変更した場合、きしみはvipadkovo(許しの時)が変更の意味を変更し、意図したとおりにpratsyuvatiにならない可能性があります。

定数を選択すると、定数が省略されたときに示したように、値が変更されないままになることが保証されます。

©2022androidas.ru-Androidのすべて