Atributos y métodos estáticos en PHP

Atributos y métodos estáticos en PHP

¡Hola! ¿Cómo están? ¡Bienvenidos! Continuando con el curso de PHP, hoy veremos lo que son los atributos y métodos estáticos en PHP 8.

¡Empecemos!

¿Qué son los atributos y métodos estáticos en PHP?

Los atributos y métodos estáticos son elementos de una clase que pertenecen a la clase en sí, en lugar de pertenecer a una instancia particular de la clase (objeto). Los atributos y métodos estáticos son compartidos por todas las instancias de la clase y se pueden acceder directamente a través del nombre de la clase, sin necesidad de crear un objeto.

Atributos estáticos

Un atributo estático es una variable que mantiene su valor a lo largo de todas las instancias de la clase y se comparte entre todas ellas. Se declara utilizando la palabra clave “static”

Métodos estáticos

Un método estático es un método que se puede invocar directamente a través del nombre de la clase, sin necesidad de crear una instancia de la clase. Se declara utilizando la palabra clave “static”

La sintaxis básica para definir atributos y métodos estáticos es la siguiente:

class MiClase {
    // Atributo estático
    public static $atributoEstatico = 0;

    // Método estático
    public static function metodoEstatico() {
        // Código del método estático
    }
}

Implementar atributos y métodos estáticos

En primer lugar, vamos a crear en la carpeta del proyecto el archivo atributos_metodos_estaticos.php.

Veamos un ejemplo. vamos a crear una clase “Libro” que contendrá un atributo estático $titulo y un método también estático Autor que retorne el nombre del autor.

class Libro {
    public static $titulo = "Programación en PHP 8";
    public static function getAutor() {
        echo "Daniels Marti";
    }
}

Al definir tanto el atributo y método como estáticos pueden acceder directamente desde la clase Libro, sin la necesidad de instanciar el objeto.

echo Libro::$titulo;
Libro::autor();

Referencia de atributos y métodos estáticos desde la misma clase

Los atributos y métodos estáticos pertenecen a la clase, por lo que no se puede instanciar al objeto dentro de la clase con la palabra reservada $this como se realiza normalmente. Para que pueda acceder desde la misma clase se utiliza la palabra reservada self. Veamos un ejemplo, vamos a crear otro método dentro de la clase “Libro” donde va a retornar el título del libro.

public function imprimirTitulo() {
    echo self::$titulo;
}

Seguidamente, vamos a crear un nuevo objeto $libro que va ser una nueva instancia de la clase Libro, con el objeto $libro vamos a llamar al método imprimirTitulo.

$libro = new Libro();
$libro->imprimirTitulo();

Herencia de atributos y métodos estáticos

Cuando se define una herencia de las clases, la clase hija no puede acceder a los atributos y métodos estáticos de la clase padre con la palabra reservada $this, si no que se utiliza en este caso la palabra reservada parent. 

Por ejemplo, vamos a crear una nueva clase “Ciencia” que va heredar de la clase “Libro”, dentro de la clase hija vamos a crear un método categoría que va a retornar la categoría del libro más el título del libro que lo declaramos en la clase padre.

class Ciencia extends Libro {
    public function categoria() {
        echo "Programacion - " . parent::$titulo;
    }
}

Por último, vamos a crear un objeto $ciencia que va ser una nueva instancia de la clase hija y vamos a llamar al método categoría.

$ciencia = new Ciencia();
$ciencia->categoria();

Es importante tener en cuenta que los atributos y métodos estáticos se comparten entre todas las instancias de la clase, lo que significa que cualquier modificación realizada en un atributo estático afectará a todas las instancias de la clase.

Ejercicios de la clase

1.- Crear una clase Calculadora con métodos estáticos para realizar operaciones matemáticas de suma, resta, multiplicación y división. Cada método debe aceptar dos números como parámetros y devolver el resultado de la operación correspondiente.

Hasta aquí la clase de hoy, atributos y métodos estáticos en PHP 8. Puedes descargarte el código fuente de esta clase y todos los demás en el repositorio de GitHub, si tienes alguna consulta puedes dejarnos un comentario o si quieres saber más acerca de este tema puedes visitar el sitio oficial de PHP. En la próxima clase veremos lo que son la creación y manipulación de arrays en PHP

Saludos y éxitos.

Victor Peña

Victor Peña

Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.

Deja un comentario

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