- var_dump: documentation ( source)
- strrev: documentation ( source)
<?php
interface WorldInterface {
function doAThing($foo);
}
class World implements WorldInterface {
public function __construct(string $name) {
$this->name = $name;
}
public function doAThing($foo) {
echo $foo;
}
}
class BackwardsWorld implements WorldInterface {
public function __construct(string $name) {
$this->name = strrev($name);
}
public function doAThing($foo) {
echo strrev($foo);
}
}
class Hello {
/**
* @var World
*/
private $world;
public function setWorld( WorldInterface $world ) {
$this->world = $world;
}
}
class WorldFactory {
// full disclosure: I'm still bad at factories
public static function makeWorld($name) {
return new World($name);
}
public static function makeDlrow($name) {
return new BackwardsWorld($name);
}
}
$hey = new Hello();
$hey->setWorld(WorldFactory::makeWorld('blorp'));
$yeh = new Hello();
$yeh->setWorld(WorldFactory::makeDlrow('blorp'));
var_dump($hey, $yeh);