identifier = $id; } public function signals() { if ( $this->signals == null ) $this->signals = new ezcSignalCollection( __CLASS__ ); return $this->signals; } public function manipulate() { // change the data here $this->signals()->emit( "dataChanged", $this->identifier ); } } class Cache { public function deleteCache( $identifier ) { echo "Deleting cache for ID: {$identifier}\n"; } } $cache = new Cache(); ezcSignalStaticConnections::getInstance()->connect( "DataObject", "dataChanged", array( $cache, "deleteCache" ) ); $data1 = new DataObject( 1 ); $data2 = new DataObject( 2 ); $data1->manipulate(); $data2->manipulate(); ?>