Skip to content

Instantly share code, notes, and snippets.

@igorw
Created August 20, 2013 10:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save igorw/6279608 to your computer and use it in GitHub Desktop.
Save igorw/6279608 to your computer and use it in GitHub Desktop.
<?php
class Greeting {
public $message;
function __construct($message) {
$this->message = $message;
}
function format($name) {
return $this->message.' '.$name;
}
}
interface Greeter {
function greet($name);
}
class StandardGreeter implements Greeter {
private $greeting;
function __construct(Greeting $greeting) {
$this->greeting = $greeting;
}
function greet($name) {
return $this->greeting->format($name);
}
}
class RandomGreeter implements Greeter {
private $greetings;
function __construct(array $greetings) {
$this->greetings = $greetings;
}
function greet($name) {
$greeting = $this->greetings[array_rand($this->greetings)];
return $greeting->format($name);
}
}
$standard = new StandardGreeter(new Greeting('Hi'));
$random = new RandomGreeter([
new Greeting('Hi'),
new Greeting('Hello'),
new Greeting('Yo'),
new Greeting('Salut'),
]);
var_dump($standard->greet('Igor'));
var_dump($standard->greet('Gordon'));
var_dump($random->greet('PeeHaa'));
var_dump($random->greet('Ocramius'));
var_dump($random->greet('HamZa'));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment