变量$this在 PHP 中是什么意思?

2022-08-30 07:11:55

我一直在PHP中看到这个变量,我不知道它的用途。我从来没有亲自使用过它。$this

有人可以告诉我这个变量在PHP中是如何工作的吗?$this


答案 1

它是对当前对象的引用,最常用于面向对象的代码中。

例:

<?php
class Person {
    public $name;

    function __construct( $name ) {
        $this->name = $name;
    }
};

$jack = new Person('Jack');
echo $jack->name;

这会将“Jack”字符串存储为所创建对象的属性。


答案 2

在 PHP 中了解变量的最佳方法是在各种上下文中针对解释器进行尝试:$this

print isset($this);              //true,   $this exists
print gettype($this);            //Object, $this is an object 
print is_array($this);           //false,  $this isn't an array
print get_object_vars($this);    //true,   $this's variables are an array
print is_object($this);          //true,   $this is still an object
print get_class($this);          //YourProject\YourFile\YourClass
print get_parent_class($this);   //YourBundle\YourStuff\YourParentClass
print gettype($this->container); //object
print_r($this);                  //delicious data dump of $this
print $this->yourvariable        //access $this variable with ->

因此,伪变量具有当前对象的方法和属性。这样的事情很有用,因为它允许您访问类中的所有成员变量和成员方法。例如:$this

Class Dog{
    public $my_member_variable;                             //member variable

    function normal_method_inside_Dog() {                   //member method

        //Assign data to member variable from inside the member method
        $this->my_member_variable = "whatever";

        //Get data from member variable from inside the member method.
        print $this->my_member_variable;
    }
}

$this是对解释器为您创建的 PHP 的引用,其中包含一个变量数组。Object

如果在普通类中的普通方法内部调用,则 返回该方法所属的 Object(类)。$this$this

如果上下文没有父对象,则可能是未定义的。$this

php.net 有一个很大的页面,讨论PHP面向对象编程以及如何根据上下文的行为。https://www.php.net/manual/en/language.oop5.basic.php$this


推荐