abstract class Command {
protected $_receiver;
public function __construct(Receiver $receiver) {
$this->_receiver = $receiver;
}
abstract public function execute($data);
}
class PullCommand extends Command {
public function execute($data) {
$this->_receiver->pull($data);
}
}
class AddCommand extends Command {
public function execute($data) {
$this->_receiver->add($data);
}
}
class DeleteCommand extends Command {
public function execute($data) {
$this->_receiver->delete($data);
}
}
class PushCommand extends Command {
public function execute($data) {
$this->_receiver->push($data);
}
}
class Receiver {
public function pull($data) {
echo "Pull Action : {$data}<br>";
}
public function add($data) {
echo "Add Action : {$data}<br>";
}
public function delete($data) {
echo "Delete Action : {$data}<br>";
}
public function push($data) {
echo "Push Action : {$data}<br>";
}
}
class Invoker {
private $_commands = array();
public function addCommand(Command $command) {
array_push($this->_commands, $command);
}
public function exeCommand($data) {
foreach ($this->_commands as $command) {
$command->execute($data);
}
}
}
$invoker = new Invoker();
$invoker->addCommand(new PullCommand(new Receiver()));
$invoker->addCommand(new AddCommand(new Receiver()));
$invoker->addCommand(new DeleteCommand(new Receiver()));
$invoker->addCommand(new PushCommand(new Receiver()));
$invoker->exeCommand("hehe");
protected $_receiver;
public function __construct(Receiver $receiver) {
$this->_receiver = $receiver;
}
abstract public function execute($data);
}
class PullCommand extends Command {
public function execute($data) {
$this->_receiver->pull($data);
}
}
class AddCommand extends Command {
public function execute($data) {
$this->_receiver->add($data);
}
}
class DeleteCommand extends Command {
public function execute($data) {
$this->_receiver->delete($data);
}
}
class PushCommand extends Command {
public function execute($data) {
$this->_receiver->push($data);
}
}
class Receiver {
public function pull($data) {
echo "Pull Action : {$data}<br>";
}
public function add($data) {
echo "Add Action : {$data}<br>";
}
public function delete($data) {
echo "Delete Action : {$data}<br>";
}
public function push($data) {
echo "Push Action : {$data}<br>";
}
}
class Invoker {
private $_commands = array();
public function addCommand(Command $command) {
array_push($this->_commands, $command);
}
public function exeCommand($data) {
foreach ($this->_commands as $command) {
$command->execute($data);
}
}
}
$invoker = new Invoker();
$invoker->addCommand(new PullCommand(new Receiver()));
$invoker->addCommand(new AddCommand(new Receiver()));
$invoker->addCommand(new DeleteCommand(new Receiver()));
$invoker->addCommand(new PushCommand(new Receiver()));
$invoker->exeCommand("hehe");