jueves, 31 de julio de 2014

Propiedades y métodos estáticos en PHP


Bienvenid@s, crear clases con el tiempo se convierte en algo fundamental para mantener una estructura y un orden en la aplicación. Para crear clases en PHP existen variantes que a veces pueden ayudar a tener una cierta eficiencia y accesibilidad, de hecho los frameworks PHP, se basan en esto, en ser sumamente flexibles y asumen en buena parte de sus clases propiedades y métodos estáticos. ¿por qué?, una de las grandes ventajas de utilizar propiedades y métodos estáticos es que los hacen accesibles sin tener que crear una instancia de la clase. De lo contrario, a las propiedades y métodos estáticos no podremos acceder a través de un objeto instanciado.

Si has utilizado en alguna ocasión algún framework PHP habrás utilizado en más de una ocasión las propiedades y métodos estáticos:

print CLASE::$propiedad;
print CLASE::metodo();

Pero también habrás observado que al quererlo hacer a través de una instancia, has obtenido un error:

Strict Standards: Accessing static property CLASE::$propiedad as non static

$clase = new CLASE();
print $clase->propiedad;
print $clase->metodo();

Script de ejemplo:

class CLASE
 {
  public static $propiedad = "Hola Mundo";
 
  public static function metodo()
  {
   return self::$propiedad;
  }
 }
 
/* Es válido */
print CLASE::$propiedad;
print CLASE::metodo();

/* 
Regresa un error:

$clase = new CLASE();
print $clase->propiedad;
print $clase->metodo();

*/


En las propiedades y métodos estáticos no utilizaremos $this-> para referenciar a la clase utilizaremos self, como se puede ver en la clase del ejemplo.


No hay comentarios: