self と $this の機能は非常に似ていますが、異なります。 $this は静的メンバーと定数を参照できません。 self はクラス自体に似ており、$this はインスタンスそのものに似ています。
1. self
1.self は、このクラスの静的プロパティと静的メソッドにアクセスでき、親クラスの静的プロパティと静的メソッドにアクセスできます。 self を使用する場合、インスタンス化する必要はありません
<?php class selfStuP{ static $instance; public function __construct(){ self::$instance = 'instance'; //静态属性只能通过self来访问 } public function tank(){ return self::$instance; //访问静态属性 } } $str = new selfStuP(); echo $str->tank(); echo "\n"; ?>
ページ出力:instance
<?php class selfStuP{ static $instance; public function __construct(){ self::$instance = 'dell'; //静态属性只能通过self来访问 } static public function pentium(){ return self::$instance; //静态方法也可以继续访问静态变量,访问时需 要加$ } public function tank(){ return self::pentium(); //访问静态属性 } } $str = new selfStuP(); echo $str->tank(); echo "\n"; ?>
ページ出力:dell
2.self は const
<?php class selfStuP{ const NAME = 'tancy'; public function tank(){ return self::NAME; } } $str = new selfStuP(); echo $str->tank(); echo "\n"; ?>
で定義された定数にアクセスできます ページ出力:tancy
2. this
1.this は、このクラスのメソッドとプロパティを呼び出すことができ、また、親クラスの調整可能なメソッドとプロパティを呼び出すこともできます。static 定数と const 定数を除いて、その他は基本的にすべて呼び出すことができます。これを使用して連絡しました
<?php class thisStu{ 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 thisStu(); echo $str->tank(); echo "\n"; echo $str->dell(); echo "\n"; echo $str->datesrt(); echo "\n"; ?>
ページ出力:
public
private
protected
概要:
つまり、self は静的クラスを参照するクラス名であり、$this は静的クラスを参照するインスタンス名です非静的クラスに。
関連する推奨事項:
PHP における self、static、$this の違いと、後期静的バインディングの詳細な説明
PHP における $this とアクセス修飾子の使用方法の詳細な説明
PHPにおけるselfと$thisの詳しい説明 $thisの違い
以上がPHPでのselfとthisの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。