これは、PHP オブジェクト指向における静的属性と静的メソッドの呼び出しの分析です。呼び出し(呼び出せるかどうか、どのように呼び出すか)については、メモリのどこに保存されているかを理解する必要があるため、非常に理解しやすいです。静的プロパティとメソッド (静的および非静的を含む) は、メモリ内に 1 つの場所しかありません (静的プロパティではなく、インスタンス化されたオブジェクトと同じ数のプロパティがあります)。
インスタンス:
<?php header("content-type:text/html;charset=utf-8"); class Human{ staticpublic $name = "小妹"; public$height = 180; staticpublic functiontell(){ echoself::$name;//静态方法调用静态属性,使用self关键词 //echo $this->height;//错。静态方法不能调用非静态属性 //因为 $this代表实例化对象,而这里是类,不知道 $this 代表哪个对象 } publicfunction say(){ echoself::$name . "我说话了"; //普通方法调用静态属性,同样使用self关键词 echo$this->height; } } $p1 = new Human(); $p1->say(); $p1->tell();//对象可以访问静态方法 echo $p1::$name;//对象访问静态属性。不能这么访问$p1->name //因为静态属性的内存位置不在对象里 Human::say();//错。say()方法有$this时出错;没有$this时能出结果 //但php5.4以上会提示 ?>
(1) 静的プロパティはインスタンス化せずに呼び出すことができます。静的属性はクラスに格納されるため、呼び出しメソッドは「クラス名::属性名」になります。 結論:
(2)、静的メソッドはインスタンス化せずに呼び出すことができます。上記
(3) と同様に、静的メソッドは非静的プロパティを呼び出すことはできません。非静的プロパティはインスタンス化してオブジェクトに格納する必要があるため
(4)、静的メソッドは self キーワードを使用して非静的メソッドを呼び出すことができます。 php では、メソッドが self:: になった後、自動的に静的メソッドになります
関連する推奨事項:
phpにおけるstaticキーワードの使い方と注意点を詳しく解説
以上がPHP での静的属性と静的メソッド呼び出しの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。