Clases Estáticas¶
Son aquellas que tienen propiedades y/o métodos estáticos (también se conocen como de clase, porque su valor se comparte entre todas las instancias de la misma clase).
Se declaran con static
y se referencian con ::
.
- Si queremos acceder a un método estático, se antepone el nombre de la clase:
Producto::nuevoProducto()
. - Si desde un método queremos acceder a una propiedad estática de la misma clase, se utiliza la referencia
self
:self::$numProductos
<?php
class Producto {
const IVA = 0.23;
private static $numProductos = 0;
public static function nuevoProducto() {
self::$numProductos++;
}
}
Producto::nuevoProducto();
$impuesto = Producto::IVA;
También podemos tener clases normales que tengan alguna propiedad estática:
<?php
class Producto {
const IVA = 0.23;
private static $numProductos = 0;
private $codigo;
public function __construct(string $cod) {
self::$numProductos++;
$this->codigo = $cod;
}
public function mostrarResumen() : string {
return "El producto " . $this->codigo . " es el número " . self::$numProductos;
}
}
$prod1 = new Producto("PS5");
$prod2 = new Producto("XBOX Series X");
$prod3 = new Producto("Nintendo Switch");
echo $prod3->mostrarResumen();
Actividades¶
-
AC 305. (RA3 / CE3b CE3c CE3d / IC1 / 3p) - Se ha de modificar la clase de la actividad AC303. Además, se ha de añadir una constante
SUELDO_TOPE
con el valor del sueldo que debe pagar impuestos, y modificar el código para utilizar la constante. No olvides añadirle el constructor. -
AR 306. (RA3 / CE3b CE3c CE3d CE3g / IC1 / 3p) - Existe la necesidad de realizar mejoras en AC305. Se ha de cambiar la constante por una variable estática
sueldoTope
, de manera que mediantegetter/setter
se pueda modificar su valor. -
AC 307. (RA3 / CE3b CE3c CE3d / IC1 / 3p) - Se necesita seguir con las mejoras en AC305. Se ha de implementar el siguiente método con una cadena HTML que muestre los datos de un empleado dentro de un párrafo y todos los teléfonos mediante una lista ordenada (para ello, se deberá crear un
getter
para los teléfonos):public static function toHtml(Empleado $emp): string