首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么时候我应该使用'self‘而不是'$this'?

什么时候我应该使用'self‘而不是'$this'?
EN

Stack Overflow用户
提问于 2008-09-30 06:23:06
回答 9查看 773.8K关注 0票数 2.2K

在PHP5中,使用self$this有什么不同

什么时候是合适的?

EN

回答 9

Stack Overflow用户

发布于 2013-05-08 14:59:00

在类定义中,$this指的是当前对象,而self指的是当前类。

有必要使用self引用类元素,使用$this引用对象元素。

self::STAT // refer to a constant value
self::$stat // static variable
$this->stat // refer to an object variable  
票数 22
EN

Stack Overflow用户

发布于 2009-05-18 19:42:36

我认为问题不在于是否可以通过调用ClassName::staticMember来调用类的静态成员。问题是使用self::classmember$this->classmember有什么不同。

例如,无论您使用self::还是$this->,以下两个示例都可以正常工作

class Person{
    private $name;
    private $address;

    public function __construct($new_name,$new_address){
        $this->name = $new_name;
        $this->address = $new_address;
    }
}

class Person{
    private $name;
    private $address;
    public function __construct($new_name,$new_address){
        self::$name = $new_name;
        self::$address = $new_address;
    }
}
票数 17
EN

Stack Overflow用户

发布于 2016-01-01 14:36:43

self指的是当前类(在其中被调用),

$this指的是当前对象。您可以使用static而不是self。

请参见示例:

class ParentClass {
    function test() {
        self::which();    // Outputs 'parent'
        $this->which();   // Outputs 'child'
    }

    function which() {
        echo 'parent';
    }
}

class ChildClass extends ParentClass {
    function which() {
        echo 'child';
    }
}

$obj = new ChildClass();
$obj->test();

输出:

 parent
 child
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/151969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档