ホームページ >バックエンド開発 >PHPの問題 >PHPで静的属性と静的メソッドを呼び出す方法

PHPで静的属性と静的メソッドを呼び出す方法

王林
王林転載
2020-08-13 17:51:213214ブラウズ

PHPで静的属性と静的メソッドを呼び出す方法

静的プロパティとメソッド (静的および非静的を含む) は、メモリ内に 1 つの場所しかありません (静的プロパティの代わりに、インスタンス化されたオブジェクトと同じ数のプロパティがあります)。

(推奨チュートリアル: php グラフィック チュートリアル)

例:

header("content-type:text/html;charset=utf-8");

class Human{

static public $name = "小妹";

public $height = 180;

static public function tell(){

echo self::$name;//静态方法调用静态属性,使用self关键词

//echo $this->height;//错。静态方法不能调用非静态属性

//因为 $this代表实例化对象,而这里是类,不知道 $this 代表哪个对象

}

public function say(){

echo self::$name . "我说话了";

//普通方法调用静态属性,同样使用self关键词

echo $this->height;

}

}

$p1 = new Human();

$p1->say();

$p1->tell();//对象可以访问静态方法

echo $p1::$name;//对象访问静态属性。不能这么访问$p1->name

//因为静态属性的内存位置不在对象里

Human::say();//错。say()方法有$this时出错;没有$this时能出结果

//但php5.4以上会提示

?>

(推奨ビデオ チュートリアル: php ビデオ チュートリアル)

要約:

(1) 静的プロパティはインスタンス化せずに呼び出すことができます。静的属性はクラスに格納されるため、呼び出しメソッドは「クラス名::プロパティ名」;

(2) 静的メソッドはインスタンス化せずに呼び出すことができます。同上

(3) 静的メソッドは非静的プロパティを呼び出すことはできません。非静的プロパティはインスタンス化してオブジェクトに格納する必要があるため、

(4) 静的メソッドは、self キーワードを使用して非静的メソッドを呼び出すことができます。 PHP では、メソッドが self:: と呼ばれた後、自動的に静的メソッドに変換されます;

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

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。