ホームページ > バックエンド開発 > PHPチュートリアル > PHPでのstatic、const、defineの違いの分析

PHPでのstatic、const、defineの違いの分析

WBOY
リリース: 2016-07-25 08:58:43
オリジナル
1228 人が閲覧しました
この記事では、PHP における static、const、define の使い方の違いを紹介します。必要な方は参考にしてください。

PHP では、static、const、define がよく使われます。今日は 3 つの違いについて学びます。

部分を定義します: マクロは、定数値を置換するだけでなく、式やコード スニペットを置換するためにも使用できます。 (マクロは非常に強力ですが、エラーが発生しやすいため、その長所と短所についてはかなりの議論の余地があります。) マクロの構文は次のとおりです。 #define マクロ名 マクロ値 プログラマー間の推奨および一般的な慣行として、マクロ名はすべて大文字で書かれることがよくあります。

マクロを利用する利点: 1) コードがより簡潔かつ明確になりました もちろん、これはマクロに適切な名前を付けるかどうかに依存します。一般に、マクロ名は明確かつ直感的な意味を持つ必要があり、場合によっては長い方がよい場合もあります。 2) 便利なコードメンテナンス コンパイル時にマクロを処理することを「前処理」といいます。つまり、正式なコンパイルの前に、コンパイラはまずコード内に出現するマクロを対応するマクロ値に置き換える必要があります。このプロセスは、皆さんや私がワープロ ソフトウェアで使用する検索と置換に似ています。したがって、マクロを使用してコード内で定数を表現する場合、最終的には即値が使用され、その量の種類が明確に指定されません。

定数部分 定数定義の形式は次のとおりです。 const データ型 定数名 = 定数値; const によって定義される定数にはデータ型があります。データ型を定義する定数により、コンパイラはデータをチェックし、プログラム内で発生する可能性のあるエラーをトラブルシューティングすることが容易になります。定数は最初に値を指定する必要があり、その後のコードではこの定数の値を変更することはできません。

2つの違い: メモリ空間の割り当て。 define がマクロを定義する場合、メモリ領域は割り当てられず、コンパイル時に main 関数内で置き換えられます。型やステートメント構造などのチェックは行われません。つまり、マクロ定義定数です。 #define null 0 などの単なる配置です。null に遭遇すると、コンパイラは常に null を 0 に置き換えます (質問がある場合は、C 言語の書籍の前処理の部分を参照してください)。 const で定義された定数にはデータ型があります。データ型の定数を定義すると、コンパイラがデータをチェックし、プログラム内で発生する可能性のあるエラーをトラブルシューティングすることが容易になります。したがって、const を使用して定数を定義すると、プログラム間のセキュリティが確保されなくなります。 .define は、任意のグローバル定数を定義します どこからでもアクセス可能

const はクラス名でのみアクセスでき、変更することはできません。PHP5 にはオブジェクト指向のアイデアが数多く追加されています。オブジェクト指向の考え方は Java のオブジェクト指向の考え方に近いです。ここでは、PHP5 を学習している友人の役に立つことを願って、PHP5 の static キーワードと const キーワードの機能について説明します。

(1) クラス内の static キーワードは、メンバーが静的であることを示します。静的の後のメンバーはクラスに属し、どのオブジェクト インスタンスにも属さず、他のクラスからはアクセスできないため、外部アクセスを制限できます。クラスのインスタンスにより、プログラムがメンバーを完全に保護することができます。クラスの静的変数はグローバル変数に非常に似ており、グローバル関数と同様に、クラスのすべてのインスタンスで共有できます。クラスの静的メソッドは、クラスの静的プロパティにアクセスできます。また、静的メンバーには self を使用してアクセスする必要があります。これを使用するとエラーが発生します。

(2) constconst は、C の #define と同様に定数を定義するキーワードです。プログラム内で値を変更するとエラーになります。上記のコードの例: n" ); //クラス名を直接入力して静的メソッド Counter::getCount にアクセスするために使用します //クラスのバージョンを出力します print( "使用したバージョン: " .Counter::VERSION. "
n" ); ?>



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