PHP 5 で '$this' ではなく 'self' を使用する場合
PHP 5 では、正しいキーワードを使用してクラスを参照するメンバーとメソッドが重要です。 'self' と '$this' のどちらを選択するかは、静的メンバーを参照しているかインスタンス メンバーを参照しているかによって決まります。
インスタンス メンバーに '$this' を使用する
'$this' は、オブジェクトの現在のインスタンスを指します。これは、各インスタンスに固有の非静的メンバーにアクセスするために使用されます。例:
class MyClass { private $member = 1; function __construct() { echo $this->member; // Outputs 1 } }
静的メンバーに 'self' を使用する
'self' は、インスタンスに関係なく、現在のクラスを参照します。これは、クラスのすべてのインスタンス間で共有される静的メンバーにアクセスするために使用されます。例:
class MyClass { private static $staticMember = 2; function __construct() { echo self::$staticMember; // Outputs 2 } }
ポリモーフィズムとメンバー関数
'$this' はポリモーフィズムを有効にし、派生クラスが親クラスのメンバー関数をオーバーライドできるようにします。例:
class BaseClass { function foo() { echo 'BaseClass::foo()'; } } class DerivedClass extends BaseClass { function foo() { echo 'DerivedClass::foo()'; } } $derivedObject = new DerivedClass(); $derivedObject->foo(); // Outputs 'DerivedClass::foo()'
'self' によるポリモーフィズムの抑制
メンバー関数で '$this' の代わりに 'self' を使用すると、ポリモーフィックな動作を抑制できます。 。この関数は、オブジェクトの実際の型に関係なく、常に親クラスから実装を呼び出します。例:
class BaseClass { function foo() { echo 'BaseClass::foo()'; } } class DerivedClass extends BaseClass { function foo() { echo 'DerivedClass::foo()'; } } $derivedObject = new DerivedClass(); $derivedObject->self::foo(); // Outputs 'BaseClass::foo()'
以上がPHP 5 でクラスメンバーにアクセスするために `self` と `$this` を使用するのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。