一、定義
可以把在類中始終保持不變的值定義為常量。在定義和使用常量的時候不需要使用
$
符号。常量的值必須是一個定值,不能是變量,類屬性,數字運算的結果或函數調用。
二、文法
const constant = '常量';
三、調用方法
1) 類内部
// 方法一:
self::常量名;
// 方法二:
類名::常量名;
舉例:
// 方法一:self::常量名稱
self::WINNER;
// 方法二:類名::常量名
Chu::WINNER;
完整代碼:
class Animal
{
// 可以寫所需要的代碼
}
class Chu extends Animal
{
// 定義一個常量
const WINNER = '今天是9月8日';
public function getDay()
{
echo Chu::WINNER; // 可以 return Chu::WINNER;(由于一個方法中隻能有一個 return,是以此處用 echo 來測試)
echo '<hr>';
return self::WINNER;
}
}
$obj = new Chu();
var_dump($obj->getDay());
運作結果:

2) 類外部
// 方法一:
類名::常量名;
// 方法二:
對象名::常量名;
舉例:
// 方法一:類名::常量名
Chu::WINNER;
// 方法二:對象名::常量名
$obj::WINNER;
完整代碼:
class Animal
{
// 可以寫所需要的代碼
}
class Chu extends Animal
{
const WINNER = '今天是9月8日';
}
$obj = new Chu();
echo Chu::WINNER;
運作結果:
四、使用 define
定義類常量
define
舉例1:在類中定義類常量
class Animal
{
// 代碼塊
}
class Chu extends Animal
{
const WINNER = '今天是9月8日';
define('W', '今天是2018年9月8日');
public function get()
{
echo Chu::W;
return self::WINNER;
}
}
$obj = new Chu();
var_dump($obj->get());
運作結果:
注:無法在類中用
define
直接定義類常量,隻能在類的方法中定義,且使用的是定義時的預設值
舉例2:在類的方法定義類常量
class Animal
{
// 代碼塊
}
class Chu extends Animal
{
public function get()
{
define('W', '今天是2018年9月8日');
return W;
}
}
$obj = new Chu();
var_dump($obj->get());
運作結果:
總結:
1)在類中,隻能使用 const
來定義類常量;
const
2) 在類内,使用類常量,用 self::常量名
或者 類名::常量名
;
self::常量名
類名::常量名
3)在類外,使用類常量,用 類名::常量名
或者 對象名::常量名
;
類名::常量名
對象名::常量名
4) self
用來找到目前變量所在的類的名稱.
self