クラスの中で、constキーワードで定数を定義できる。
- クラス内でアクセスする場合はself::でアクセス
- クラス外でアクセスする場合はクラス名::でアクセス(変数::でも可能)
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php class MyClass {   const MY_CONSTANT = 'my constant value';   public function show() {     echo self::MY_CONSTANT . "\n";   } } $obj = new MyClass(); echo MyClass::MY_CONSTANT . "\n"; echo $obj::MY_CONSTANT . "\n"; echo $obj->show(); // my constant value // my constant value // my constant value | 
self::、クラス名::などをつけないと、警告が出たうえで定数名自体が文字列として解釈される。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class MyClass {   const MY_CONSTANT = 'my constant value';   public function show() {     MY_CONSTANT . "\n";   } } $obj = new MyClass(); echo MY_CONSTANT . "\n"; echo $obj->show(); // PHP Warning:  Use of undefined constant MY_CONSTANT - assumed 'MY_CONSTANT' (this will throw an Error in a future version of PHP) // PHP Warning:  Use of undefined constant MY_CONSTANT - assumed 'MY_CONSTANT' (this will throw an Error in a future version of PHP) | 
定数なので値を再代入することはできない。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php class MyClass {   const CONSTANT = 'constatnt value';   public function show() {     // self::CONSTANT = 'another constant valuse';     // エラー:PHP Parse error:  syntax error, unexpected '='   } } $obj = new MyClass(); $obj->show(); // MyClass::CONSTANT = 'another constant value'; // エラー:PHP Parse error:  syntax error, unexpected '=' | 
const定義の右辺に定義済みの定数、算術式を使うことができる。しかし関数は使用できない。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php class MyClass {   const CONST1 = 2;   const CONST2 = 3;   const CONST3 = self::CONST1 + self::CONST2; //  const CONST4 = sqrt(CONST1); //  関数は使えない:Constant expression contains invalid operations } echo MyClass::CONST3 . "\n"; // 5 | 
定数定義の際にアクセス修飾子を使えて、アクセス制限ができる。省略した場合はpublic。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php class MyClass {   public const PUBLIC_CONST = 'public constant';   private const PRIVATE_CONST = 'private constant';   public function show() {     echo self::PUBLIC_CONST . "\n";     echo self::PRIVATE_CONST . "\n";   } } $obj = new MyClass(); $obj->show(); echo MyClass::PUBLIC_CONST . "\n"; // echo MyClass::PRIVATE_CONST . "\n"; // エラー:PHP Fatal error:  Uncaught Error: Cannot access private const MyClass::PRIVATE_CONST // public constant // private constant // public constant // PHP Fatal error:  Uncaught Error: Cannot access private const MyClass::PRIVATE_CONST in ... |