L'Observer / Observable pattern est super pratique car il vous permet de faire du code évènementiel. Contrairement à la majorité des implémentations, j'ai utilisé quelques tricks afin de simplifier le côté déclaratif côté gestion d'événements.
Exemple de déclaration :
class car extends ObservableBase {
const evtAccelerate = 1; // declare event
public function speedUp() {
$this->raise(self::evtAccelerate);
}
}
Exemple d'attachement
$car = new car();
$car->onAccelerate('myFunction');
function myFunction(&$sender, &$args) { ...
Un exemple plus complet :