首页 >后端开发 >php教程 >在 PHP 5 中何时使用 `self` 与 `$this` 来访问类成员?

在 PHP 5 中何时使用 `self` 与 `$this` 来访问类成员?

Patricia Arquette
Patricia Arquette原创
2024-12-17 15:41:11953浏览

When to Use `self` vs. `$this` in PHP 5 to Access Class Members?

何时在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn