Skip to content

Instantly share code, notes, and snippets.

@letitride
Created December 3, 2012 23:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save letitride/4198951 to your computer and use it in GitHub Desktop.
Save letitride/4198951 to your computer and use it in GitHub Desktop.
php observer
<?php
abstract class Observer
{
abstract public function update( $generator );
}
class AddressObserver extends Observer
{
public function update( $generator ){
print $generator->get_data() . "\n";
}
}
class GpsObserver extends Observer
{
public function update( $generator ){
$address = $generator->get_data();
print "lat:35.690921 lon:139.700258 \n";
}
}
abstract class Data
{
private $_observers = array();
public function add_observer( $observer ){
$this->_observers[] = $observer;
}
public function notify_observer(){
foreach( $this->_observers as $ovserver ){
$ovserver->update( $this );
}
}
abstract public function get_data();
abstract public function execute();
}
class AddressData extends Data
{
private $_address;
public function get_data(){
return $this->_address;
}
public function execute(){
$this->_address = "Shinjuku";
parent::notify_observer();
}
}
$number_generator = new AddressData();
$number_generator->add_observer( new AddressObserver() );
$number_generator->add_observer( new GpsObserver() );
$number_generator->execute();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment