クラス定数

定数は"define(定数名,値)"でグローバル定数として定義される。
いっぽう、クラス定数はクラス内に定義され、"const 定数名 = 値"で定義し、クラス内からの参照は"self::定数名"で呼ぶことが出来る。
クラス定数はインスタンスの必要が無く、クラス外から直接呼ぶことが出来る。
また、その性質上publicと同じ扱いとなるので、アクセス修飾子は付けられなく、define()と同じように"$"が接頭辞につきません。

php

<?php
class hoge{
	//クラス定数の宣言 "const 定数名"
	const tax = 0.08;
	
	private $price = 0;
	
	public function setPrice($price){
		$this->price = $price;
		}
	
	public function getSalePrice(){
		//クラス定数を「クラス内」で参照 "self::クラス定数名"
		$tax = $this->price * self::tax;
		$price = $this->price + $tax;
		return $price;
		} 
}//end_class "hoge"

//クラス定数を「クラス外」から参照 "クラス名::クラス定数名"
var_dump(hoge::tax);

$prd = new hoge;
$prd->setPrice(410);
$price = $prd->getSalePrice();

var_dump($price);
?>

出力結果

float(0.08) float(442.8)