この記事では、主にオブジェクト指向phpでの静的プロパティと静的メソッドの呼び出しについて紹介し、例を用いて静的プロパティと静的メソッドの原理と呼び出し手法を分析します。 、必要な友達はそれを参照できます
この記事の例では、PHP での静的プロパティと静的メソッドの呼び出しについて説明します。皆さんの参考に共有してください。詳細は以下の通りです
これは、PHP オブジェクト指向における静的属性と静的メソッドの呼び出しの分析です。呼び出し(呼び出せるかどうか、どのように呼び出すか)については、メモリのどこに保存されているかを理解する必要があるため、非常に理解しやすいです。静的プロパティとメソッド (静的および非静的を含む) は、メモリ内に 1 つの場所しかありません (静的プロパティではなく、インスタンス化されたオブジェクトと同じ数のプロパティがあります)。
例:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
header("content-type:text/html;charset=utf-8"); クラス人間{ static public $name = "リトルシスター"; パブリック $height = 180; 静的パブリック関数 Tell(){ echo self::$name;//静的メソッドは self キーワードを使用して静的プロパティを呼び出します //echo $this->height;//間違っています。静的メソッドは非静的プロパティを呼び出すことはできません //$this はインスタンス化されたオブジェクトを表し、ここにクラスがあるため、$this がどのオブジェクトを表すかわかりません } パブリック関数say(){ echo self::$name .「話しました」; //通常のメソッドは、self キーワードも使用して静的プロパティを呼び出します echo $this->高さ; } } $p1 = 新しい人間(); $p1->say(); $p1->tell();//オブジェクトは静的メソッドにアクセスできます echo $p1::$name;//オブジェクトは静的プロパティにアクセスします。このように $p1->name にアクセスすることはできません//静的属性の記憶場所がオブジェクト内にないため Human::say();//間違っています。 Say() メソッドに $this がある場合はエラーが発生しますが、$this がない場合は結果を取得できます //ただし、php5.4 以降ではプロンプトが表示されます ?> |
結論:
(1). 静的プロパティはインスタンス化せずに呼び出すことができます。静的属性はクラスに格納されるため、呼び出しメソッドは「クラス名::属性名」になります。
(2) 静的メソッドはインスタンス化せずに呼び出すことができます。同上
(3) 静的メソッドは非静的プロパティを呼び出すことができません。非静的属性はインスタンス化してオブジェクトに保存する必要があるためです。
(4) 静的メソッドは、self キーワードを使用して非静的メソッドを呼び出すことができます。 PHP では、メソッドが self:: と呼ばれた後、自動的に静的メソッドに変換されます。