Supongamos que hay una clase llamada "Class_A
", tiene una función de miembro llamada "func
".¿Cómo implementar un decorador en PHP?
Quiero que el "func
" haga un trabajo extra envolviendo Class_A
en una clase de decorador.
$worker = new Decorator(new Original());
¿Alguien puede dar un ejemplo? Nunca he usado OO con PHP.
¿Es la siguiente versión correcta?
class Decorator
{
protected $jobs2do;
public function __construct($string) {
$this->jobs2do[] = $this->do;
}
public function do() {
// ...
}
}
El código anterior tiene la intención de poner un poco más de trabajo en una matriz.
Debe inicializar la variable: protected $ jobs2do = array(); – soulmerge
Pero esa no es la versión estándar, tal vez debería usar algo como 'call_user_func' – omg
¡Oh, no lo vi! Sí, por supuesto, no hay cierres antes de PHP 5.3. Definitivamente debería echar un vistazo a las devoluciones de llamadas en PHP: http://us.php.net/call-user-func – soulmerge