Elementos, funciones, objeto en PHP
/

Atributos o métodos estáticos en la Programación Orientada a Objetos en PHP

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

 

Deja una respuesta