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

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

Patricia Arquette
发布: 2024-12-17 15:41:11
原创
952 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板