'; }}/** * Observer 2 * Class Savename */class Savename implements Observer {public Function update () {echo ' The Nam E has been save
'; }}/** * Viewer interface * Interface observered */interface observered {public function attach ($object); Public Function Delete ($object); Public function notify ();} /** * The viewer Class user */class User implements observered {public $observers = array (); /** * Registered Observer * @param $object */Public Function attach ($object) {if (!is_object ($object)) { Exit (' It is not a object '); if ($object instanceof Observer) {if (!in_array ($object, $this->observers)) {$this- >observers[] = $object; }} else {echo Get_class ($object). ' is disable
'; }}/** * Delete Observer * @param $object */Public Function Delete ($object) {if (In_array ($object, $this->observers)) {$index = Array_search ($object, $this->observers); unset ($this->observers[$index]); }}/** * Notifies all observers */Public function notify () {foreach ($this->observers as $val) { $val->update (); }}/** * The observed person's own business */Public Function printname () {echo ' I had been observing
'; }} $object = new User (); $object->attach (New SendEmail ()); Registered Observer 1 $object->attach (new Savename ()); Registered Observer 2 $object->printname (); The observed person's own business $object->notify (); To inform all observers