static en PHP

0
62

Que es?

La palabra reservada static en PHP es una declaracion que se les da a miembros y/o metodos de una clase. Un miembro o metodo de una clase declarado como static va a poder ser accesado sin necesidad de hacer una instancia del objecto en una variable.

En mi Post anterior enseño el manejo del Operador de reslucion ::

class Mensajes
{
  public static $msok= 'Mensaje ok!';
  public static function getMsOk()
  {
    echo self::$msok;
  }
}
Mensajes::getMsOk(); //-> Mensaje ok

Donde debe ir?

La palabra reservada static debe ser declara despues de la visibilidad de cada miembro y/o metodo. Por una compatibilidad con PHP 4, si no se pone una visibilidad (public, protected, private) esta la tomara por defecto como public.

class Mensajes
{
  public static $msok= 'Mensaje ok!';
  //lo tomara como public
  static function getMsOk()
  {
    echo self::$msok;
  }
}
Mensajes::getMsOk(); //-> Mensaje ok

Algunas restricciones

Una de la restricciones que tienes la declaracion static es que al no necesitar estar instanciado el objeto para llamar a sus metodos y/p miembros, la pseudo variable $this no esta permitida dentro de los metodos declarados como static, para esto se usara siempre self::.

class Mensajes
{
  public static $msok= 'Mensaje ok!';
  public static function getMsOk()
  {
    $this::$msok; //->Parse Error
    $this->$msok; //->Fatal Error
  }
}