19/7/09

Crear "estructuras" en php5.3

En alguna ocasión me ha interesado crear una clase que contendría simplemente unos cuantos atributos y poco más y al final he acabado haciendo un constructor del tipo:

class mystruct {
    public $a, $b, $c;
    function __construct($a, $b, $c) {
        $this->a = $a;
        $this->b = $b;
        $this->c = $c;
    }
}


class struct {
    static public function create() {
        $obj = new static;
        $keys = array_keys((array)$obj);
        foreach (func_get_args() as $k => $v) $obj->{$keys[$k]} = $v;
        return $obj;
    }
}

Para versiones anteriores de php podemos usar el constructor:

class struct {
    static function __construct() {
        $keys = array_keys((array)$obj);
        foreach (func_get_args() as $k => $v) $this->{$keys[$k]} = $v;
        return $this;
    }
}


Con lo que podríamos hacer lo siguiente:


class mystruct extends struct { public $a, $b, $c; }
mystruct::create(1, 2, 3);
o
new mystruct(1, 2, 3);

1 comentario:

  1. Enhorabuena por tu blog, si quieres puedes apuntarte al directorio web/blog www.cincolinks.com podrás promocionar tu web, con tu ficha y tus votaciones y valoraciones, con un método de intercambio de visitas llamado 5links! con el que tu blog será visitado tanto como visites a los demás y que harán que tu blog se de a conocer por toda la red. Pásate ;)

    Creo que no hay muchos blogs de las características y temática del tuyo en este directorio, me gustaría mucho que participaras.


    Saludos, espero verte por www.cincolinks.com.

    ResponderEliminar