Saltar al contenido principal

Clases estáticas

Son aquellas que tienen propiedades y/o métodos estáticos (también se conocen como de clase, por que 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();