這不是php的問題,十有八九是你編輯器的問題。
<?php class Privilege{ const Administration = 0x1 << 1; } $a = new Privilege(); echo $a::Administration;
在centos和mac尚(都是php7),輸出結果都是2,沒有問題
php版本的問題。
changelog在這裡:
http://php.net/manual/zh/migr...
5.6引進的新功能:
使用表達式定義常數
在先前的 PHP 版本中, 必須使用靜態值來定義常數,宣告屬性以及指定函數參數預設值。 現在你可以使用包含數值、字串字面量以及其他常數在內的數值表達式來 定義常數、宣告屬性以及設定函數參數預設值。
5.6之前必須用靜態值,5.6之後支援常數用運算定義
個人認為出現這個錯誤的原因是線上的PHP版本的低於5.6引起。 PHP5.6以前,常數的右邊值只能是直接量和靜態值,不能是表達式。只有php5.6起,才開始支援表達式作為常數的右邊值。
這不是php的問題,十有八九是你編輯器的問題。
在centos和mac尚(都是php7),輸出結果都是2,沒有問題
php版本的問題。
changelog在這裡:
http://php.net/manual/zh/migr...
5.6引進的新功能:
使用表達式定義常數
在先前的 PHP 版本中, 必須使用靜態值來定義常數,宣告屬性以及指定函數參數預設值。 現在你可以使用包含數值、字串字面量以及其他常數在內的數值表達式來 定義常數、宣告屬性以及設定函數參數預設值。
5.6之前必須用靜態值,5.6之後支援常數用運算定義
個人認為出現這個錯誤的原因是線上的PHP版本的低於5.6引起。 PHP5.6以前,常數的右邊值只能是直接量和靜態值,不能是表達式。只有php5.6起,才開始支援表達式作為常數的右邊值。