This is a PHP program that prints one animal noise to a browser page and one animal noise to a text file
<?php
abstract class Printer
{
public abstract function doPrint($text);
}
class PrintPrinter extends Printer
{
public function doPrint($text)
{
print($text);
}
}
class FilePrinter extends Printer
{
public function doPrint($text)
{
file_put_contents(dirname(__FILE__).'/speak.txt',$text);
}
}
abstract class Animal
{
private $printer;
public function __construct($printer)
{
$this->printer = $printer;
}
abstract public function speak();
protected function doSpeak($text)
{
$this->printer->doPrint($text);
}
}
class Dog extends Animal
{
public function speak()
{
$this->doSpeak('woof!');
}
}
class Cat extends Animal
{
public function speak()
{
$this->doSpeak('meow!');
}
}
$print = new PrintPrinter();
$file = new FilePrinter();
$cat = new Cat($print);
$cat->speak();
$dog = new Dog($file);
$dog->speak();