Mega Code Archive

 
Categories / Php / Class
 

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