Dentro de una clase declarada en PHP, llamaremos atributos o métodos estáticos a aquellos que se pueden utilizar directamente sin necesidad de llevar a cabo el proceso de instanciación de un objeto. También se le conoce como atributo o método de clase.
Anteponiendo la palabra reservada ‘static’ en la definición del método o atributo queda declarada. Para su invocación o uso basta con seguir la siguiente sintaxis que puede verse en el apartado de uso de este pequeño ejemplo.
<?php class nombre_clase { //atributos static $nombre_atributo; //métodos static function nombre_método () { } } //uso nombre_clase::$nombre_atributo; nombre_clase::$nombre_metodo (); ?>
Ejemplo
Definición de una clase
class unaClase { //cualquier atributo privado private$x; //Atributo privado estático para almacenar //el número de objetos instanciados static private $numero = 0; //Constante de clase para definir un valor predeterminado const PREDETERMINADO = 'X'; //Función pública estática que devuelve el número de objetos static public function numeroObjetos () { return unaClase::$numero; } //Método constructor // - recuperar el valor del atributo (valor predeterminado) // = la constante de clase) // - incrementar el número de objetos public function __construct ($valor = unaClase::PREDETERMINADO) { $this->x = $valor; unaClase::$numero++; echo"Creación del objeto: $this->x<br>"; } //Método destructor // - reducir el número de objetos public function __destruct () { unaClase::$numero--; echo"Eliminación del objeto: $this->x<br>"; } }
Objetos y uso de atributos y métodos de clase
<?php //Crear dos objetos $desconocido = new unaClase(); //constructor, predeterminado $abc = new unaClase ('ABC'); //constructor //Mostrar el número de objetos echo unaClase::numeroObjetos(),' objeto(s)<br>'; //"Eliminar" un objeto unset ($desconocido); //destructor //Mostrar el número de objetos echo unaClase::numeroObjetos(),' objeto (s)<br>'; ?>
Ejecución del código del ejemplo