これは、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
|
<?php
header( "content-type:text/html;charset=utf-8" <?php
header(class Human{ static public $name = "小妹" ;
public $height = 180;
static public function tell(){
echo self:: $name ; "content-type:text/html;charset=utf-8" );
class
Human{ //因为 $this代表实例化对象,而这里是类,不知道 $this 代表哪个对象
public function say(){
echo self:: $name . "我说话了" ;
static public
$name echo $this ->height;
= 「妹」}
$p1 = new Human();
$p1 ;
公開$p1 ->tell(); $身長 = 180 ; echo $p1 :: $name ;
static public
functionHuman::say(); tell(){
echo?> self:: $name |
;
//静的メソッドは静的プロパティを呼び出します。使用します自分自身のキーワード
//echo $this->height;//間違っています。静的メソッドは非静的プロパティを呼び出すことはできません
// $これはインスタンス化されたオブジェクトを表し、ここにクラスがあるので、どのオブジェクト$が
を表すかわかりません}}
🎜🎜public🎜🎜function🎜🎜say(){ 🎜🎜🎜🎜 🎜🎜echo🎜🎜self::🎜🎜$name🎜🎜 🎜🎜「話しました。」 🎜🎜🎜🎜🎜🎜 //通常のメソッドは静的プロパティを呼び出しますが、self キーワードも使用します
🎜🎜🎜🎜 🎜🎜エコー🎜🎜$this🎜🎜->身長; 🎜🎜🎜🎜 🎜🎜}
🎜🎜🎜🎜} 🎜🎜🎜🎜$p1🎜🎜= 🎜🎜new🎜🎜Human(); 🎜🎜🎜🎜$p1🎜🎜->say();
🎜🎜🎜🎜$p1🎜🎜->tell();🎜🎜//オブジェクトは静的メソッドにアクセスできる
🎜🎜🎜🎜echo🎜🎜$p1🎜🎜::🎜🎜$name🎜🎜;🎜🎜//オブジェクトは静的プロパティにアクセスします。このように $p1->name にアクセスすることはできません
🎜🎜🎜🎜//静的属性の記憶場所がオブジェクト内にないため
🎜🎜🎜🎜人間::say();🎜🎜//違う。 Say() メソッドに $this がある場合はエラーが発生しますが、$this がなくても結果は取得できます。
🎜🎜🎜🎜//ただし、php5.4 以降ではプロンプトが表示されます
🎜🎜🎜🎜?> ,🎜静的メソッドは、self キーワードを使用して非静的メソッドを呼び出すことができます。 PHP では、メソッドは self:: を呼び出すと、自動的に静的メソッドに変換されます 🎜🎜🎜🎜3. 静的メソッドは非静的属性を呼び出すことができません。非静的プロパティはインスタンス化してオブジェクトに保存する必要があるためです。
🎜
以上、PHP オブジェクト指向における静的プロパティと静的メソッドの呼び出しを内容も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。 🎜
🎜
🎜