Supponiamo che esista una classe denominata "Class_A
", che abbia una funzione membro denominata "func
".Come implementare un decoratore in PHP?
Voglio il "func
" per fare qualche lavoro extra avvolgendo Class_A
in una classe decoratore.
$worker = new Decorator(new Original());
Qualcuno può dare un esempio? Non ho mai usato OO con PHP.
La seguente versione è corretta?
class Decorator
{
protected $jobs2do;
public function __construct($string) {
$this->jobs2do[] = $this->do;
}
public function do() {
// ...
}
}
Il codice precedente intende apportare un lavoro aggiuntivo a un array.
Si dovrebbe inizializzare la variabile: protected $ jobs2do = array(); – soulmerge
Ma questa non è ancora la versione standard, forse dovrebbe usare qualcosa come "call_user_func" – omg
Oh, non l'ho visto! Sì, certo, non ci sono chiusure prima di PHP 5.3. Dovresti assolutamente dare un'occhiata ai callback in PHP: http://us.php.net/call-user-func – soulmerge