{ return "BloggsCal footer\n"; } } class MegaCommsManager extends CommsManager { function getHeaderText() { return "MegaCal header\n"; } function getApptEncoder() { return new MegaApptEncoder(); } function getTtdEncoder() { return new MegaTtdEncoder(); } function getContactEncoder() { return new MegaContactEncoder(); } function getFooterText() { return "MegaCal footer\n"; } } $mgr = new MegaCommsManager(); print $mgr->getHeaderText(); print $mgr->getApptEncoder()->encode(); print $mgr->getFooterText();
class MegaApptEncoder extends ApptEncoder { function encode() { return 'this is mega object'; } } abstract class CommsManager { abstract function getApptEncoder(); } class BloggerCommsManager extends CommsManager { function getApptEncoder() { return new BloggerApptEncoder(); } } class MegaCommsManager extends CommsManager { function getApptEncoder() { return new MegaApptEncoder(); } } $blogger = new BloggerCommsManager(); $bloggerOb = $blogger->getApptEncoder(); echo $bloggerOb->encode() . "<br/>"; $mega = new MegaCommsManager(); $megaOb = $mega->getApptEncoder(); echo $megaOb->encode();