何时在 PHP 5 中使用 'self' 而不是 '$this'
在 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' 抑制多态
通过在成员函数中使用 'self' 代替 '$this',可以抑制多态行为。无论对象的实际类型如何,该函数都将始终调用父类的实现。例如:
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中文网其他相关文章!