¿Cuál es la diferencia entre self y $this ?

La palabra clave self se usa para referirse a la clase actual dentro del alcance de esa clase solamente, mientras que $this se usa para referirse a las variables miembro y la función para una instancia particular de una clase.

operador self: el operador self representa la clase actual y, por lo tanto, se usa para acceder a variables de clase o variables estáticas porque estos miembros pertenecen a una clase en lugar del objeto de esa clase.
Sintaxis:

self::$static_member

Operador $this: $this, como sugiere el signo ‘$’, es un objeto. $this representa el objeto actual de una clase. Se utiliza para acceder a miembros no estáticos de una clase.
Sintaxis:

$that->$non_static_member;

Cuándo usar self sobre $this en PHP :

Ejemplo:

PHP

<?php
    class StudentDetail{
    
        public $name;
        public static $age;
  
        public function getName() {
            return $this->name;
        }
       
        public static function getAge() {
            return self::$age;
        }
          
        public function getStudentAge() {
            return self::getAge();
        }
    }
      
    $obj = new StudentDetail();
  
    $obj->name = "GFG";
  
    StudentDetail::$age = "18";
  
    echo "Name : " .$obj->getName()."\xA";
    echo "Age  : " .StudentDetail::getStudentAge();
  
?>
Producción

Name : GFG
Age  : 18

Diferencia entre self y $this:

uno mismo

$esto

La palabra clave self no está precedida por ningún símbolo , podemos usarla tal como está. esta palabra clave debe ir precedida de un símbolo $ siempre que se refiera a los miembros de la clase.
Para acceder a las variables y métodos de clase, se utiliza un operador de resolución de alcance. Para acceder a las variables y métodos de clase, se utiliza un operador de flecha ( -> ).
La palabra clave self se utiliza para acceder a los miembros estáticos de la clase presentes en el programa. $this se usa para acceder a los miembros no estáticos de la clase presente en el programa.
La palabra clave self se refiere a los miembros de la clase, pero no apunta a ningún objeto particular de la clase.   $this podría referirse a las variables miembro y la función para una instancia seleccionada de la clase.

Publicación traducida automáticamente

Artículo escrito por talktoosaurabh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *