{ echo 'I must have supper.I am so hungry.<br />'; } } class Observer3 extends AbstractObserver { function action() { echo 'I must go to bed.<br />'; } } class Observer4 extends AbstractObserver { function action() { echo 'I will go to see my classmate tomorrow.<br />'; } } //test $subject = new ConcreteSubject(); $subject->add('Observer1'); $subject->add('Observer2'); $subject->add('Observer3'); $subject->notify(9); var_dump($subject->__get('observers')); $subject->add('Observer4'); var_dump($subject->__get('observers')); $subject->notify(10); $subject->splice('Observer2'); var_dump($subject->__get('observers')); $subject->notify(14);