一、定义
可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $
符号。常量的值必须是一个定值,不能是变量,类属性,数字运算的结果或函数调用。
二、语法
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
定义类常量
举例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());
运行结果:
总结: