PHP で 'Self' と '$This' を使用する場合
PHP での 'self' と '$ の違いを理解するこれは重要です。 「Self」は現在のクラスを指し、「$this」は現在のオブジェクトを指します。
「Self」を使用する場合:
静的メンバーへのアクセス (変数またはメソッド):
class MyClass { static $static_member = 10; } echo MyClass::$static_member; // Output: 10
親クラス メソッドの呼び出し:
class ChildClass extends ParentClass { public function myMethod() { self::parentMethod(); // Calls the parent class method } }
「$This」を使用する場合:
アクセス中非静的メンバー:
class MyClass { private $instance_member = 20; } $obj = new MyClass(); echo $obj->instance_member; // Output: 20
インスタンス メソッドの呼び出し:
class MyClass { public function myMethod() { echo $this->instance_member; // Accesses the instance member } }
ポリモーフィズム:派生クラスからのインスタンス メソッドの呼び出し:
class BaseClass { public function myMethod() { echo 'BaseClass::myMethod()'; } } class DerivedClass extends BaseClass { override public function myMethod() { echo 'DerivedClass::myMethod()'; } } $baseObj = new BaseClass(); $derivedObj = new DerivedClass(); $baseObj->myMethod(); // Output: 'BaseClass::myMethod()' $derivedObj->myMethod(); // Output: 'DerivedClass::myMethod()'
抑制中ポリモーフィズム: 派生クラスで 'self' を使用して親クラスのメソッドを呼び出す:
class BaseClass { public function myMethod() { echo 'BaseClass::myMethod()'; } } class DerivedClass extends BaseClass { override public function myMethod() { parent::myMethod(); // Calls the BaseClass's myMethod() using self:: } } $derivedObj = new DerivedClass(); $derivedObj->myMethod(); // Output: 'BaseClass::myMethod()'
以上がPHP `self` と `$this`: それぞれをいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。