PHP/Class/Class Constant Property — различия между версиями

Материал из Web эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Версия 10:37, 26 мая 2010

Class Constant

<?php
class Employee {
    const AVAILABLE      = 0;
    const OUT_OF_STOCK   = 1;
    public $status;
}
print Employee::AVAILABLE;
?>



Define class constant

<?php
   class math_functions {
     const PI = "3.14159265";
     const E = "2.7182818284";
     const EULER = "0.5772156649";
     /* define other constants and methods here... */
   }
   echo math_functions::PI;
?>



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