2016/11/14 - 註解由 sobak 更新
-----
常數和 PHP 類別定義
在類別定義內使用 "define('MY_VAR', 'default value')" 無法如預期般運作。您必須使用 PHP 關鍵字 'const' 並立即使用純量值初始化它——布林值、整數、浮點數、字串(或 PHP 5.6+ 中的陣列)。
<?php
define('MIN_VALUE', '0.0'); // 正確 - 在類別定義外部有效。
define('MAX_VALUE', '1.0'); // 正確 - 在類別定義外部有效。
//const MIN_VALUE = 0.0; 正確 - 在類別定義內外皆有效。
//const MAX_VALUE = 1.0; 正確 - 在類別定義內外皆有效。
class Constants
{
//define('MIN_VALUE', '0.0'); 錯誤 - 僅在類別定義外部有效。
//define('MAX_VALUE', '1.0'); 錯誤 - 僅在類別定義外部有效。
const MIN_VALUE = 0.0; // 正確 - 在類別定義內部有效。
const MAX_VALUE = 1.0; // 正確 - 在類別定義內部有效。
public static function getMinValue()
{
return self::MIN_VALUE;
}
public static function getMaxValue()
{
return self::MAX_VALUE;
}
}
?>
#範例 1
您可以像這樣直接存取這些常數
* 完整輸入類別名稱。
* 輸入兩個 (2) 個冒號。
* 完整輸入常數名稱。
#範例 2
因為我們的類別定義提供了兩個 (2) 個靜態函式,您也可以像這樣存取它們
* 完整輸入類別名稱。
* 輸入兩個 (2) 個冒號。
* 完整輸入函式名稱(包含括號)。
<?php
#範例 1:
$min = Constants::MIN_VALUE;
$max = Constants::MAX_VALUE;
#範例 2:
$min = Constants::getMinValue();
$max = Constants::getMaxValue();
?>
類別常數一旦宣告並初始化後,就不能設定為不同的值——這就是為什麼類別定義中沒有 setMinValue() 和 setMaxValue() 函式的原因——這表示它們是唯讀且靜態的(由所有類別實例共享)。