<?php
abstract class ApptEncoder{
abstract function encode();
}
class BloggsApptEncoder extends ApptEncoder{
function encode(){
return "Appointment data encoded in BloggsCal format\n";
}
}
class MegaApptEncoder extends ApptEncoder{
function encode(){
return "Appointment data encode in MegaCal format\n";
}
}
class CommsManager{
const BLOGGS=1;
const MEGA=2;
private $mode=1;
function __construct($mode){
$this->mode=$mode;
}
function getApptEncoder(){
switch($this->mode){
case (self::MEGA):
return new MegaApptEncoder();
default:
return new BloggsApptEncoder();
}
}
function getHeaderText(){
switch($this->mode){
case (self::MEGA):
return "Megacal header\n";
default:
return "Bloggscal header\n";
}
}
}
$re=new CommsManager(CommsManager::MEGA);
$result=$re->getApptEncoder();
echo $re->getHeaderText();
echo $result->encode();
?>
03-16
914