Define class level constant value to control the class behaviour : Class Constant Property « Class « PHP






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

           
       








Related examples in the same category

1.Class Constant
2.Define class constant