PHP Sample

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();