Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/02/2007, 13:36
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Re: Dudas con atributo static

El ejemplo más típico que usaría para explicarlo (como si fuera un curso) es cuando tienes una clase "Cliente" y los atributos "id" y "ultimoId".

El primer atributo es de instancia, lo cual significa que cuando creas la instancia a partir de la clase este será su "entorno de trabajo" (no se me ocurrió otra mejor expresión).

Código PHP:
$unClienteBueno = new Cliente();
$unClienteMalo = new Cliente(); 
El atributo "id" es propio (único) para cada una de esas instancias, pero comparten el "diseño fundamental" por venir del mismo "modelo base" (la Clase). No se ven entre ellos, no se comparten entre objetos del mismo tipo.

Pero si tu creas un "ultimoId" estático, este atributo se compartirá con todas las instancias de la misma clase.

Nota: prefiero usar el termino "atributo de clase" que es más claro que decir "estático".

Si le aplicas la siguiente lógica verás su utilidad:

Código PHP:
<?php
class Cliente{
    static 
$ultimoId 0;
    private 
$id;

    public function 
__construct(){
        
$this->id = ++self::$ultimoId;
    }
    public function 
__toString(){
        return 
" ".$this->id;
    }
}

$unClienteBueno = new Cliente();
$unClienteMalo = new Cliente();

echo  
$unClienteBueno$unClienteMalo;

?>
Nota importante: hay que tener en cuenta que en PHP, como en todos los lenguajes de scripting web, una vez terminado de ejecutar, desaparecen todos los datos, objetos, etc, y si vuelves a iniciar la página todo inicia otra vez de cero.

La forma de mantenerlo es persistir de alguna manera la información, pero eso ya escapa a la pregunta original.

Referencias sobre la persistencia y el entorno "stateless" en este mismo foro:
__________________
Blog phpsenior.com Cursos a Distancia surforce.com