php における this と self の違いは、self がクラスを呼び出すのに対し、$this はインスタンス化されたオブジェクトを呼び出すことです。 self は、このクラスの静的プロパティと静的メソッド、および const で定義された定数にアクセスでき、このクラスのメソッドとプロパティを呼び出すことができます。
違い:
self はクラスを呼び出しますが、$this はインスタンス化されたオブジェクトを呼び出します。
(推奨チュートリアル: php チュートリアル)
詳しく説明しましょう:
1. self は静的プロパティと静的メソッドにアクセスできます親クラスの静的プロパティと静的メソッドにアクセスできます。 self を使用する場合、インスタンス化する必要はありません。
コード例:
class self_test { static $instance; public function __construct(){ self::$instance = 'instance';//静态属性只能通过self来访问 } public function tank(){ return self::$instance;//访问静态属性 } } $str = new self_test(); echo $str->tank();
結果出力:
instance
2. self は const で定義された定数にアクセスできます
コード例:
class self_test { const NAME = 'tancy'; public function tank(){ return self::NAME; } } $str = new self_test(); echo $str->tank();
3. これは、静的プロパティと const 定数に加えて、このクラスのメソッドとプロパティ、または親クラスの呼び出し可能なメソッドとプロパティを呼び出すことができます。
コード例:
class self_test { public $public; private $private; protected $protected; public function __construct(){ $this->public = 'public'; $this->private = 'private'; $this->protected = 'protected'; } public function tank(){ return $this->public; } public function dell(){ return $this->private; } public function datesrt(){ return $this->protected; } } $str = new self_test(); echo $str->tank(); echo "</br>"; echo $str->dell(); echo "</br>"; echo $str->datesrt();
結果:
public private protected
概要: self は静的クラスを参照するクラス名、$this は静的クラスを参照するインスタンス名です。非静的クラス。
以上がphpのthisとselfの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。