php_PHP チュートリアルにおける静的クラスと静的変数の違いの分析

WBOY
リリース: 2016-07-13 09:45:58
オリジナル
893 人が閲覧しました

phpにおける静的クラスと静的変数の違いの分析

静的とは、静的オブジェクトまたは静的変数を定義することです。この記事の関連する例を読んだ後、静的で定義される変数またはクラスメソッドの特徴を理解します。

1. オブジェクト $ob ject = new Class() を作成し、変数/メソッドがアクセス可能であれば、「->gt;」を使用して $ob ject->attribute/function を呼び出します。

2. 静的か非静的かを問わず、クラスのメソッド/変数: class::attribute/function を直接呼び出します。ただし、前提条件があります。

A. 変数の場合、その変数にアクセスできる必要があります。

B. メソッドの場合、メソッドがアクセス可能であることに加えて、要件を満たす必要もあります。

①静的メソッドであれば特別な条件はありません

②非静的メソッドの場合は、$thisを使用しない、つまり非静的変数/メソッドを呼び出さないようにメソッドを変更する必要があります。もちろん、静的変数/メソッドを呼び出しても問題ありません。メソッド

それでは、$object ject->…を使用する場合とclass::…:

を使用する場合の違いを見てみましょう。

1. $object->…を使用する場合、コンストラクターを実行してオブジェクトを作成する必要があります。

2. オブジェクトを作成するコンストラクターを実行せずに、class::...を使用して静的メソッド/変数を呼び出します。

3. class::... を使用して非静的メソッド/変数を呼び出すと、オブジェクトを作成するためにコンストラクターを実行する必要はありません。

すると、2と3は同じなので、静的メソッド/変数の意味は何でしょうか?

静的: クラスのメンバーまたはメソッドを静的として宣言すると、クラスをインスタンス化せずに直接アクセスできます (静的メソッドを除く) 静的メンバーはクラスに属し、どのオブジェクト インスタンスにも属しません。ただし、クラスのオブジェクト インスタンスは共有できます。

例、コードは次のとおりです。

[コード]phpコード:

01

02クラスパーソン{

03 // 静的メンバーのプロパティを定義します

04 public static $country = "中国";

05 // 静的メンバーメソッドを定義する

06 public static function my Country() {

07 // 静的メンバープロパティへの内部アクセス

08 echo "I am".self::$country."人
";

09}

10}

11クラスの生徒が人を拡張します{

12関数学習() {

13 echo "私は".parent::$country."人
";

14}

15}

16//メンバー属性値を出力します

17echo Person::$country."
" // 出力: 中国

18$p1 = 新しい人();

19//echo $p1-> // 書き方が間違っています

20//静的メンバーメソッドにアクセスする

21person::my Country(); // 出力: 私は中国人です

22// 静的メソッドにはオブジェクトを通じてアクセスすることもできます:

23$p1->my Country();

24

25//サブクラス内のメンバー属性値を出力します

26echo Student::$country."
" // 出力: 中国

27$t1 = 新入生();

28$t1->study(); // 出力: 私は中国人です

29?>

この例を実行すると、次のように出力されます:

中国

私は中国人です

私は中国人です

中国

私は中国人です

概要: クラス内の静的メンバー属性またはメソッドにアクセスするには、self:: ($slef ではないことに注意) を使用します。コードは次のとおりです。

slef:: $country

slef::my Country()

サブクラス内の親クラスの静的メンバーのプロパティまたはメソッドにアクセスするには、parent:: ($parent ではないことに注意) を使用します。コードは次のとおりです。

親:: $country

親::my Country()

静的メンバーの属性とメソッドへの外部アクセスはクラス名/サブクラス名::で、コードは次のとおりです。

人::$国

人::my Country()

学生::$country

ただし、静的メソッドには通常のオブジェクトを通じてアクセスすることもできます。

例、静的変数を宣言する場合、コードは次のとおりです:

[コード]phpコード:

1 2 function foo(){

3 static $int = 0;// 正解です

4 static $int = 1+2; // (式なので) 間違っています

5 static $int = sqrt(121) // 間違っています(式なので)

6 $int++;

7 echo $int;

8}

9?>

例、静的変数を使用する例、コードは次のとおりです。

[コード]phpコード:

1

2関数Test()

3 {

4 static $w3sky = 0;

5 echo $w3sky;

6 $w3sky++;

7}

8?>

これで、Test() 関数が呼び出されるたびに、$w3sky の値が出力され、1 ずつ増加します。

静的変数は再帰関数を処理する方法も提供します。再帰関数はそれ自体を呼び出す関数です。再帰関数を作成するときは、再帰を終了するための十分なメソッドがあることを確認する必要があります。この単純な関数は、静的変数 $count を使用して再帰的に 10 までカウントし、いつ停止するかを決定します。

例、静的変数と再帰関数、コードは次のとおりです:

[コード]phpコード:

01

02関数Test()

03 {

04 static $count = 0;

05

06 $count++;

07 echo $count;

08 if ($count

09テスト();

10}

11 $count--;

12}

13?>

注: 上の例に示すように、静的変数を宣言できます。式の結果を使用して宣言内で値を代入すると、解析エラーが発生します。

http://www.bkjia.com/PHPjc/1036683.html

tru​​ehttp://www.bkjia.com/PHPjc/1036683.html技術記事 phpにおける静的クラスと静的変数の違いを分析します。 静的とは、静的オブジェクトまたは静的変数を定義することです。 静的で定義される変数やクラスメソッドの特徴については、こちらの記事をご覧ください...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!