¿Cuándo usar self sobre $this en PHP?

El self y this son dos operadores diferentes que se utilizan para representar la clase actual y el objeto actual, respectivamente. self se usa para acceder a variables o métodos estáticos o de clase y esto se usa para acceder a variables o métodos no estáticos o de objeto. 
Por lo tanto, use self cuando sea necesario acceder a algo que pertenece a una clase y use $this cuando sea necesario acceder a una propiedad que pertenezca al objeto de la clase.
operador self: el operador self representa la clase actual y, por lo tanto, se utiliza 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

Ejemplo 1: Este es el ejemplo básico que muestra el uso del auto operador. 
 

php

<?php
 
class GFG {
    private static $static_member = "GeeksForGeeks";
 
    function __construct() {
        echo self::$static_member;
        // Accessing static variable
    }
}
 
new GFG();
?>

Producción: 
 

GeeksForGeeks

Ejemplo 2: Este ejemplo es una demostración de la explotación del comportamiento polimórfico en php usando self. 
 

php

<?php
 
class GFG {
    function print() {
        echo 'Parent Class';
    }
 
    function bar() {
        self::print();
    }
}
 
class Child extends GFG {
    function print() {
        echo 'Child Class';
    }
}
 
$parent = new Child();
$parent->bar();
?>

Producción:
 

Parent Class:

Aquí el método de la clase principal se ejecuta porque el operador self representa la clase, por lo que vemos que el método de la clase principal es solo el método de la clase principal. 
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;

Ejemplo 1: Este es el ejemplo básico que muestra el uso del operador $this.
 

php

<?php
class GFG {
    private $non_static_member = "GeeksForGeeks";
 
    function __construct() {
        echo $this->$non_static_member;
        // accessing non-static variable
    }
}
 
new GFG();
?>

Producción: 
 

GeeksForGeeks

Ejemplo 2: Este ejemplo es una demostración del comportamiento polimórfico en php usando self. 
 

php

<?php
 
class GFG {
    function print() {
        echo 'Parent Class';
    }
 
    function bar() {
        $this->print();
    }
}
 
class Child extends GFG {
    function print() {
        echo 'Child Class';
    }
}
 
$parent = new Child();
$parent->bar();
?>

Producción: 
 

Child Class

Aquí, no hay referencia a ninguna clase y el objeto que apunta a la clase secundaria está llamando al método definido en la clase secundaria. Este es un ejemplo de polimorfismo dinámico en PHP. 
 

Publicación traducida automáticamente

Artículo escrito por piyush25pv 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 *