<?php namespace DesignPatterns\Behavioral\Command; /** * This concrete command calls "print" on the Receiver, but an external * invoker just knows that it can call "execute" */ class HelloCommand implements CommandInterface { /** * @var Receiver */ protected $output; /** * Each concrete command is built with different receivers. * There can be one, many or completely no receivers, but there can be other commands in the parameters. * * @param Receiver $console */ public function __construct(Receiver $console) { $this->output = $console; } /** * execute and output "Hello World" */ public function execute() { // sometimes, there is no receiver and this is the command which // does all the work $this->output->write('Hello World'); } }