首页 >后端开发 >php教程 >PHP 5:`$this` 与 `self` – 何时使用每个?

PHP 5:`$this` 与 `self` – 何时使用每个?

Patricia Arquette
Patricia Arquette原创
2024-12-20 06:34:10623浏览

PHP 5: `$this` vs. `self` – When to Use Each?

自我与$this:何时以及如何使用每个

问题:

在 PHP 5 中,关键字“self”和“$this”的用法有何不同?什么时候应该适当使用?

答案:

简答:

使用“$this”来指代当前对象的实例变量和方法。使用“self”引用当前类的静态变量和方法。

完整答案:

非静态与静态成员:

  • "$this->member" 访问特定于该对象的非静态成员变量和方法当前对象。
  • “self::$member”访问类的所有实例共享的静态成员变量和方法。

多态性:

  • “$this”可以通过调用派生中定义的方法来演示多态性类。
  • “self”抑制多态性并始终调用当前类中定义的方法。

示例(正确用法):

class X {
    private $non_static_member = 1;
    private static $static_member = 2;

    function __construct() {
        echo $this->non_static_member . ' ' . self::$static_member;
    }
}

new X(); // Output: 1 2

示例(不正确用法):

class X {
    private $non_static_member = 1;
    private static $static_member = 2;

    function __construct() {
        echo self::$non_static_member . ' ' . $this->static_member; // Incorrect usage
    }
}

new X(); // Error: Undefined properties

抑制多态性:

class X {
    function foo() {
        echo 'X::foo()';
    }

    function bar() {
        self::foo(); // Suppresses polymorphism
    }
}

class Y extends X {
    function foo() {
        echo 'Y::foo()';
    }
}

$x = new Y();
$x->bar(); // Output: X::foo()

总结:

使用 "$ this”用于非静态成员访问和多态性。当您需要抑制多态性时,请使用“self”进行静态成员访问。

以上是PHP 5:`$this` 与 `self` – 何时使用每个?的详细内容。更多信息请关注PHP中文网其他相关文章!

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