Example #1
0
<?php

if (!isset($_GET['useConfig'])) {
    /*
        case 1: default
    */
    $bloggsCM = new BloggsCommsManager();
    $megaCM = new MegaCommsManager();
    $appt = $bloggsCM->make(CommsManager::APPT);
    $ttd = $megaCM->make(CommsManager::TTD);
    $cnt = $bloggsCM->make(CommsManager::CONTACT);
    echo $appt->encode();
    //Appointment Encoded with BloggsCal format
    echo $ttd->encode();
    //T0d0 Encoded with MegaCal format
    echo $cnt->encode();
    //Contact Encoded with BloggsCal format
} else {
    /*
        case 2: using AppConfig from the end of 9-th chapter
    */
    $cm = AppConfig::getInstance()->getCommsManager();
    $appt = $cm->make(CommsManager::APPT);
    $ttd = $cm->make(CommsManager::TTD);
    $cnt = $cm->make(CommsManager::CONTACT);
    echo $appt->encode();
    //Appointment Encoded with MegaCal format
    echo $ttd->encode();
    //T0d0 Encoded with MegaCal format
    echo $cnt->encode();
    //Contact Encoded with MegaCal format
    {
        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();
Example #3
0
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();