...nos podrías enseñar algo.
Blog

Clases instanciadas y variables estáticas en PHP

por Moises Bassan (Friday Aug 8,2009)

Supongamos que se necesita una variable que "recuerde" su valor en cada instancia de una cierta clase. Quizás pareciera tan básico que te dió miedo preguntar... Es común desconocer que una sola clase PHP puede tener métodos o variables tanto estáticas como no estáticas a la misma vez. Veamos este ejemplo:

class Bob {
    static private $cuenta;
   
    function cuantosBobs() {
        $this->cuenta = (
$this->cuenta > 0) ? $this->cuenta++ : 1;
        echo 'Hay '.$this->
cuenta.' bobs en el universo.';
    }
}

Ésta es la forma equivocada de usar las variables estáticas en una clase inicializada:

$bob1 = new Bob();
$bob1->cuantosBobs();

$bob2 = new Bob();
$bob2->
cuantosBobs();

Obviamente, se esperaba que $cuenta se incremente con cada llamado a cuantosBobs(), pero no fué así. Veamos la manera correcta de conseguir este resultado. Re-escribamos la clase así:

class Bob {
    static private $cuenta;
   
    function
cuantosBobs() {
       
Bob::$cuenta = (Bob::$cuenta > 0) ? Bob::$cuenta++ : 1;
        echo 'Hay '.
Bob::$cuenta.' bobs en el universo.';
    }
}

Ahora, cada vez que llamamos a cuantosBobs(), el valor de $cuenta se incrementará por 1.

There are no comments yet. Be the first to comment.Click to hide.