PHP での静的属性と静的メソッド呼び出しの共有

小云云
リリース: 2023-03-21 20:40:01
オリジナル
1303 人が閲覧しました

これは、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 の静的静的変数の詳細な説明

PHP での static キーワードの使用の詳細な説明

phpにおけるstaticキーワードの使い方と注意点を詳しく解説

以上がPHP での静的属性と静的メソッド呼び出しの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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