Source of: /ch14/example.14-2.php
<?php

abstract class Shape
{
    var 
$colour;
    var 
$sides;

    function 
colour() 
    { 
        return 
$this->colour
    }

    function 
sides()
    {
        return 
$this->sides;
    }

    abstract function 
area();

    function 
__construct($colour$sides)
    {
        
$this->colour $colour;
        
$this->sides $sides;
    }
}

class 
Circle extends Shape
{
    var 
$radius;

    function 
area()
    {
        return 
*  PI $this->radius;
    }

    function 
__construct($colour$radius)
    {
        
$this->radius $radius;
        
parent::__construct($colour1);
    }
}

class 
Rectangle extends Shape
{
    var 
$width;
    var 
$height;

    function 
area()
    {
        return 
$this->width $this->height;
    }

    function 
__construct($colour$width$height)
    {
        
$this->width $width;
        
$this->height $height;
        
parent::__construct($colour4);
    }
}

class 
Triangle extends Shape
{
    
// The length of each side
    
var $a;
    var 
$b;
    var 
$c;

    function 
area()
    {
        
// Area using Heron's formula
        
$s = ($this->$this->$this->c)/2;
        
$area sqrt(
            
$s * ($s $this->a) * ($s $this->b) * ($s $this->c)
            );

        return 
$area;
    }

    function 
__construct($colour$a$b$c)
    {
        
$this->$a;
        
$this->$b;
        
$this->$c;
        
parent::__construct($colour3);
    }
}
?>