function getLatestLiveTweets($hash, $sinceId) { global $config; $stacked = array(); $twitter = new TwitterAdapter(); $twitter->consumerKey = $config['twitter']['consumerKey']; $twitter->consumerSecret = $config['twitter']['consumerSecret']; $twitter->accessToken = $config['twitter']['accessToken']; $twitter->accessTokenSecret = $config['twitter']['accessTokenSecret']; if ($twitter->auth()) { $twitter->hash($hash, CONFIG_LIMIT_PULL, $sinceId); $stacked = array_merge($stacked, $twitter->format()); } return $stacked; }
return 1; } public function getUpdates() { // Return Updates return 1; } public function getFollowers() { // Return followers return 1; } } class TwitterAdapter implements EmailSubscribe { public function subscribe($username) { } public function unsubscribe($username) { } public function sendUpdates() { $tw_service = new TwitterService(); $updates = $tw_service->getUpdates(); $subscribers = $tw_service->getFollowers(); $tw_service->tweet($updates, $subscribers); } } $twitter_subscribe = new TwitterAdapter(); $twitter_subscribe->sendUpdates();
class TwitterAdapter { private $twitter; function __construct($twitter) { $this->twitter = $twitter; } function enviarMensagem($mensagem) { $this->twitter->tweet($mensagem); } } /** * Como seria feito sem o padrão * $twitter = new Twitter(); * $twitter->tweet("Ola mundo"); * ... * $twitter2 = new Twitter(); * $twitter2->tweet("Hellooo"); * */ /** Resultado: * eventualmente, se o twitter alterar o nome do método, * de cara surge um fatal error em todas as instancias dessa classe */ // Como invocar: $twitter = new TwitterAdapter(new Twitter()); $twitter->enviarMensagem("Mensagem adaptada."); /** Resultado: * objetos criados dinamicamente e manutenção para iphone se dá internamente na classe factory */