this y self en PHP

Olorunfemi Akinlua 18 agosto 2022
  1. POO en PHP
  2. this y self en PHP
this y self en PHP

this y self son propiedades de los componentes de la Programación Orientada a Objetos (POO). OOP es una característica de componente de PHP como un procedimiento de programación en lugar de programación procedimental, donde escribimos funciones que realizan operaciones de datos.

Con OOP, podemos crear objetos que tienen tanto datos como funciones (métodos).

Sin embargo, OOP proporciona una forma más rápida y completa de codificar en cualquier idioma que lo admita, incluido PHP. Ciertas funciones o propiedades pueden ser complicadas, como this y self, y pueden hacer que el uso de OOP no sea divertido.

Este artículo discutirá cómo this y self son diferentes y cómo usarlos en PHP.

POO en PHP

OOP proporciona una estructura clara para sus programas PHP y le permite seguir el popular principio No se repita.

Las clases y los métodos son una gran parte de la programación orientada a objetos en PHP y se crean fácilmente con el siguiente fragmento de código.

<?php

class Good {

    public $propertyOne;
    public $propertyTwo;
    private $propertyThree;

    function methodOne($propertyOne) {
        //
    }
}

?>

La $propertyOne, $propertyTwo, $propertyThree son propiedades de la clase Good y methodOne() es un método.

Podemos crear objetos, el objetivo completo de OOP y el motivo de las clases y métodos, utilizando este fragmento de código.

$goodOne = new Good();

this y self en PHP

Para expandir el código actual, podemos crear un método para establecer el $propertyOne de la clase Good.

class Good {

		//...

		function setGoodName($propertyOne) {
        $this->propertyOne = $propertyOne;
    }

    function showGoodName() {
        return $this->propertyOne;
    }

}

La palabra clave $this se refiere al objeto actual y solo está disponible dentro de los métodos dentro de una clase. Entonces, si queremos usar $this en nuestro código PHP, debe estar dentro de un método dentro de nuestra clase.

En el caso del fragmento de código, la palabra clave $this apunta al objeto actual para permitirnos llamar a $propertyOne dentro de la clase Good.

Hagamos uso de los métodos que hemos creado.

$book = new Good();
$book->setGoodName("PHP for Dummies");

echo $book->showGoodName();

El resultado del fragmento de código se encuentra a continuación.

PHP for Dummies

Ampliemos nuestro código PHP aún más y agreguemos una propiedad a la clase Good sobre el almacén estático Name, hagámoslo privado y devolvamos la propiedad a un constructor.

class Good {

		//...
    private static $storeName = "JK Book Store";

    function __construct()
    {
        return self::$storeName;
    }

		//...
}

La palabra clave self se refiere a la clase actual y nos permite acceder a variables estáticas y de clase como en el fragmento de código anterior. La palabra clave self utiliza el operador de resolución de alcance :: para acceder o referirse a miembros de clase estáticos.

Por lo tanto, una gran diferencia entre self y $this es que self accede a variables o métodos estáticos o de clase y $this accede a variables y métodos no estáticos y de objeto.

Entonces, cuando trabaje con programación orientada a objetos, sepa que usamos $this dentro de objetos (instancia de una clase) y self para clases y propiedades estáticas.

Código fuente completo:

<?php

class Good {

		// properties
    public $propertyOne;
    public $propertyTwo;
    private $propertyThree;
    private static $storeName = "JK Book Store";

		// methods
    function __construct()
    {
        return self::$storeName;
    }

    function setGoodName($propertyOne) {
        $this->propertyOne = $propertyOne;
    }

    function showGoodName() {
        return $this->propertyOne;
    }

}

// creating a object
$book = new Good();
$book->setGoodName("PHP for Dummies");

echo $book->showGoodName();

?>
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

Artículo relacionado - PHP Class