Define Class Level Constant Value To Control The Class Behaviour

 
    <?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";
?>

Enjoyed this post? Share it!

 

Leave a comment

Your email address will not be published.