php における static、self、$this の違いは次のとおりです: 1. [$this] は、クラス内の非静的メソッドで記述されたオブジェクトへの参照を表します; 2. Self は、これは、クラス自体を指しますが、インスタンス化されたオブジェクトは指しません; 3. static は、通常、クラス内の静的変数および静的メソッドにアクセスするために使用されます。
php における static、self、$this の違いは次のとおりです:
1、$ this
オブジェクトへの参照を表します。$this はクラス内の非静的メソッドに記述されます。クラスがインスタンス化されるとき、メソッドを呼び出す人 (通常はオブジェクト呼び出し) $this はオブジェクトへの参照を表します。
<?php class Person { public $name; public function getName() { echo $this->name; } } $p = new Person(); $p2 = new Person(); $p->name = "小红"; $p2->name = "小明"; $p->getName(); // 小红 $p2->getName(); // 小明
2. self
はこれとは異なり、クラス自体を指しており、クラス自体を指しませんインスタンス化されたオブジェクト。一般に、クラス内の静的変数および静的メソッドにアクセスするために使用され、クラス内に記述されたメソッドでもあります。どのクラス self が記述されているかは、クラス
<?php class Person { public static $name = "小红"; public static function getName() { echo self::$name; } } $p = new Person(); $p2 = new Person(); $p::getName(); // 小红 $p2::getName(); // 小红 $p::$name = "小明"; $p::getName(); // 小明 $p2::getName(); // 小明
3, static# の参照を示します。 ## 一般に、クラス内の静的変数および静的メソッドにアクセスするために使用されます。これらは、クラス内に記述されたメソッドでもあります。クラスがメソッドを呼び出すとき、静的とは、そのクラス (そのクラスをバインドする) を意味します。
<?php class A { public function say() { echo "Hello"; } public function saySelf() { //static 和 self 可以调用非静态方法 不能调用非静态属性 静态方法中不能有$this // static 和 self 可以写在非静态的方法中 ,可以使用对象调用 self::say(); } public function sayStatic() { static::say(); } } class B extends A { public function say() { echo "World"; } } $b = new B(); $b->say(); // World $b->saySelf(); // Hello $b->sayStatic(); // World
関連する学習に関する推奨事項: #
以上がPHP の static、self、$this の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。