Curiosa creación de objetos en PHP
Recuerda mucho a Javascript y frameworks tipo jQuery, para ello utiliza métodos encadenados y un objeto genérico:
// Define a new class
$animal = $class->new()
->def('init', function($t, $name) {
$t->name = $name;
})
->def('speak', function($t) {
echo "My name is $t->name\n";
});
// Extend a class
$dog = $animal->extend()
->def('speak', function($t) {
echo "My name is $t->name, I have just met you and I love you, SQUIRREL!\n";
})
->def('bark', function($t) {
echo "Woof!\n";
});
Para poder realizar esto se necesita crear la clase Obj:
class Obj {
public function __construct($methods=array()) {
$this->methods = $methods;
}
public function method($name) {
if (!isset($this->methods[$name]))
throw new BadMethodCallException();
return $this->methods[$name];
}
public function fn($name, $fn) {
$this->methods[$name] = $fn;
return $this;
}
public function __call($name, $args) {
return call_user_func_array(
$this->method($name),
array_merge(array($this), $args)
);
}
}
// Allow chaining method calls off the constructor..
function Obj($methods=array())
{
return new Obj($methods);
}
PHP Object Oriented Programming Reinvented
Vía / PHPDeveloper.org
Últimamente el número de frameworks para PHP que aparecen crece cada vez más rápido. Solar es un framework para PHP5 que nos permite desarrollar aplicaciones web de forma rápida. Usa conceptos derivados del sistema de plantillas
Ha salido una nueva version de WAMP 1.6.4, una aplicación que te instala Apache, PHP5, MySQL, PHPmyadmin y SQLitemanager en tu ordenador, la cual recomiendo sin lugar a dudas.
¡Qué pasada! No habÃa caÃdo yo en eso. Ahora podemos programar en PHP 5.3 con “prototipos”. Es curioso cómo cada vez se parecen más el desarrollo en el lado del cliente y el del lado servidor entre sÃ.
Seguro que no pasa mucho tiempo hasta que algún framework de PHP decida usar algo muy similar a esto.
Gracias por compartir 🙂