<?php abstract class Product { protected $count; const FIXED = 1; const TIMED = 2; private $costtype = 1;
function __construct( $count, $costtype=1 ) { $this->count = $count; $this->costtype = $costtype; }
function cost() { switch ( $this->costtype ) { CASE self::TIMED : return (5 * $this->count); break; CASE self::FIXED : return 30; break; default: $this->costtype = self::FIXED; return 30; } }
function chargeType() { switch ( $this->costtype ) { CASE self::TIMED : return "hourly rate"; break; CASE self::FIXED : return "fixed rate"; break; default: $this->costtype = self::FIXED; return "fixed rate"; } } }
class ProductOne extends Product { }
class ProductTwo extends Product { }
$lesson = new ProductTwo( 4, Product::TIMED ); $lesson = new ProductTwo( 4, Product::FIXED ); $lesson = new ProductTwo( 4, 33 ); print "lesson charge {$lesson->cost()}. Charge type: {$lesson->chargeType()}n"; ?>
|