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

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

Patricia Arquette
发布: 2024-12-20 06:34:10
原创
620 人浏览过

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

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