Pregunta ¿Qué significa la variable $ this en PHP?


Veo la variable $this en PHP todo el tiempo y no tengo idea para qué se usa. Nunca lo he usado personalmente, y los motores de búsqueda ignoran $ y termino buscando la palabra "esto".

¿Puede alguien decirme cómo funciona la variable $ this en PHP?


75
2017-10-06 03:45


origen


Respuestas:


Es una referencia al objeto actual, se usa más comúnmente en código orientado a objetos.

Ejemplo:

<?php
class Person {
    public $name;

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

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

Esto almacena la cadena 'Jack' como una propiedad del objeto creado.


99
2017-10-06 03:46



La mejor manera de aprender sobre el $this variable en php es preguntarle a PHP qué es. No nos pregunte, pregunte al compilador:

print gettype($this);            //object
print get_object_vars($this);    //Array
print is_array($this);           //false
print is_object($this);          //true
print_r($this);                  //dump of the objects inside it
print count($this);              //true
print get_class($this);          //YourProject\YourFile\YourClass
print isset($this);              //true
print get_parent_class($this);   //YourBundle\YourStuff\YourParentClass
print gettype($this->container); //object

28
2017-12-11 18:23



Sé su vieja pregunta, de todos modos otra explicación exacta sobre $ this. $ this se usa principalmente para referirse a las propiedades de una clase.

Ejemplo:

Class A
{
   public $myname;    //this is a member variable of this class

function callme() {
    $myname = 'function variable';
    $this->myname = 'Member variable';
    echo $myname;                  //prints function variable
    echo $this->myname;              //prints member variable
   }
}

salida:

function variable

member variable

11
2018-02-24 06:41



Es la forma de referenciar una instancia de una clase desde su interior, al igual que muchos otros lenguajes orientados a objetos.

Desde el Documentos PHP:

La pseudovariable $ this está disponible   cuando se llama un método desde dentro de   contexto del objeto. $ esta es una referencia   al objeto que llama (generalmente el   objeto al que pertenece el método,   pero posiblemente otro objeto, si   método se llama estáticamente de la   contexto de un objeto secundario).


8
2017-10-06 03:47



Veamos qué sucede si no usamos $ this y tratamos de tener variables de instancia y argumentos de constructor con el mismo nombre con el siguiente fragmento de código

<?php

class Student {
    public $name;

    function __construct( $name ) {
        $name = $name;
    }
};

$tom = new Student('Tom');
echo $tom->name;

?>

No echos nada más que

<?php

class Student {
    public $name;

    function __construct( $name ) {
        $this->name = $name; // Using 'this' to access the student's name
    }
};

$tom = new Student('Tom');
echo $tom->name;

?>

esto se hace eco de 'Tom'


6
2018-06-19 14:59



cuando creas una clase tienes (en muchos casos) variables de instancia y métodos (también conocidas como funciones). $ this accede a esas variables de instancia para que sus funciones puedan tomar esas variables y hacer lo que necesitan para hacer lo que quiera con ellas.

otra versión del ejemplo de Meder:

class Person {

    protected $name;  //can't be accessed from outside the class

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

    public function getName() {
        return $this->name;
    }
}
// this line creates an instance of the class Person setting "Jack" as $name.  
// __construct() gets executed when you declare it within the class.
$jack = new Person("Jack"); 

echo $jack->getName();

Output:

Jack

2
2017-10-06 14:47



$ esta es una variable especial y se refiere al mismo objeto, es decir. sí mismo.

En realidad, se refiere a la instancia de la clase actual

aquí hay un ejemplo que borrará la declaración anterior

<?php
 class Books {
  /* Member variables */
  var $price;
  var $title;

  /* Member functions */
  function setPrice($par){
     $this->price = $par;
  }

  function getPrice(){
     echo $this->price ."<br/>";
  }

  function setTitle($par){
     $this->title = $par;
  }

  function getTitle(){
     echo $this->title ." <br/>";
  }
}
?> 

2
2018-03-26 07:20



$this es una referencia al objeto que llama (por lo general, el objeto al que pertenece el método, pero posiblemente otro objeto, si el método se llama estáticamente desde el contexto de un objeto secundario).


2
2017-10-29 14:18



Se refiere a la instancia de la clase actual, como Meder dijo.

Ver el Documentos de PHP. Se explica en el primer ejemplo.


0
2017-10-06 03:47