• Home »
  • PHP »
  • PHP (07) POO (09) Métodos estáticos (03) Propiedades en métodos estáticos

PHP (07) POO (09) Métodos estáticos (03) Propiedades en métodos estáticos

Se pueden emplear propiedades trabajando con la clase en código y no con un objeto, siempre que estas propiedades sean estáticas.
Para ello lo único que hay que hacer es declarar la propiedad como estática, y un método set publico y estático.

<?php
 class Matematica
 {
  static $dato;

  public static function set_dato($valor)
  {
  ...
  }
 }

?>

De este modo se pueden almacenar datos en $dato, pero no podemos utilizar $this-> ya que no tenemos un objeto de la clase, pero eso PHP lo solventa con la palabra reservada self, que se utiliza para trabajar con métodos y propiedades estáticos.
Su uso quedaría así:

<?php
 class Matematica
 {
  static $dato;

  public static function set_dato($valor)
  {
   self::$dato = $valor;
  }
 }

?>

De esta forma ya tenemos nuestro dato guardado, y para usarlo se hace utilizando la expresión self::$dato como vemos a continuación:

<?php
 class Matematica
 {
  static $dato;

  public static function set_dato($valor)
  {
   self::$dato = $valor;
   echo '<p>mostrando self::$dato = ' . self::$dato . '<p>';
  }
 }

 Matematica::set_dato(6);

?>

Lo cual nos da como resultado:
mostrando self::$dato = 6

Pero puede resultar tedioso estar todo el tiempo utilizando la secuencia del self, de modo que se puede guardar como si de una variable se tratase, y trabajar con ella de la forma habitual:

<?php
 class Matematica
 {
  static $dato;

  public static function set_dato($valor)
  {
   self::$dato = $valor;
   echo '<p>mostrando self::$dato = ' . self::$dato . '<p>';
   $numero = self::$dato;
   echo '<p><b>Ahora $numero es self::$dato = </b>' . $numero . '</p>';
   $cuadrado = $numero * $numero;
   echo '<p>' . $numero . '<sup>2</sup> = ' . $cuadrado . '</p>';
  }
 }

 Matematica::set_dato(6);

?>

En este caso hemos guardado el valor dentro de de una variable llamada $cuadrado, con la cual hemos hecho un cálculo y nos da como resultado:
mostrando self::$dato = 6
Ahora $numero es self::$dato = 6
62 = 36