What does the variable $this mean in PHP?

前端 未结 10 1817

I see the variable $this in PHP all the time and I have no idea what it\'s used for. I\'ve never personally used it.

Can someone tell me how the variab

10条回答
  •  清歌不尽
    2020-11-22 05:55

    The best way to learn about the $this variable in PHP is to try it against the interpreter in various contexts:

    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 ->
    

    So the $this pseudo-variable has the Current Object's method's and properties. Such a thing is useful because it lets you access all member variables and member methods inside the class. For example:

    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 is reference to a PHP Object that was created by the interpreter for you, that contains an array of variables.

    If you call $this inside a normal method in a normal class, $this returns the Object (the class) to which that method belongs.

    It's possible for $this to be undefined if the context has no parent Object.

    php.net has a big page talking about PHP object oriented programming and how $this behaves depending on context. https://www.php.net/manual/en/language.oop5.basic.php

提交回复
热议问题