¡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
Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.