基本介绍
常量是一个不能改变值且没有 $
美元符号的变量,通常我们会将常量的命名用大写表示(严格区分大小写),但它在作用域上和普通变量有所不同,它属于 超全局变量,一旦定义了,在任何地方都能使用。
常量的值应该是标量数据类型(Boolean
、Integer
、Float
、String
),尽量避免不要使用其他类型的值。
常量一旦定义,不能对其进行赋值,且不能重新定义或是取消定义。
常量可以在任意地方定义和访问。
使用const
的方式定义常量,不能在if
、循环、函数中定义。
// 普通常量
define('MIN_SIZE', 10);
define('MAX_SIZE', 100);
echo MIN_SIZE. ' : ' . MAX_SIZE . '<br />';
// 第二种方式
const MIN_LENGTH = 100;
const MAX_LENGTH = 1000;
echo MIN_LENGTH. ' : ' . MAX_LENGTH . '<br />';
// 动态名常量定义
$name = 'TEMP';
define($name, 'hello world');
// 动态名常量获取
echo constant($name) . ' : ' . TEMP . '<br />';
// 检查常量是否已经定义
echo defined($name) . '<br />'; // true
// 普通常量
define('MIN_SIZE', 10);
define('MAX_SIZE', 100);
// 定义类
class Example{
// 类的常量
const MIN_SIZE = 20;
const MAX_SIZE = 200;
// 测试方法
static function func(){
// 20 : 100
echo self::MIN_SIZE . " : " . MAX_SIZE;
}
}
// 调用测试
Example::func();
预定义常量
PHP给网站内置了很多的预定义常量,这些常量要么来自PHP内核,要么来之各种扩展。
通过get_defined_constants()
函数可以获取当前已经定义的所有常量。
有几个经常使用但却又不太一样的常量,它们称之为 魔法常量,从本质上来说,它们并不是常量,因为它们的值会改变。
名称 | 说明 |
---|---|
__LINE__ | 获取当前所在文件中的行号 |
__FILE__ | 获取当前文件的完整路径 |
__DIR__ | 获取当前文件所在的目录 |
__FUNCTION__ | 获取当前函数的名称,如functionName
|
__CLASS__ | 获取当前类名 |
__TRAIT__ | 获取当前Trait的名称 |
__METHOD__ | 获取类的方法名称,如Class::functionName
|
__NAMESPACE__ | 获取当前命名空间的名称 |