1. 常量定义
在 PHP 中,我们经常需要为某些值设置常量,以便在整个脚本中使用。常量是一个简单值的标识符。如此设定后,该标识符不能被改变。
1.1 define()
定义常量的方法之一是使用 define() 函数。语法如下:
define(name, value, case-insensitive);
- name:必选参数,常量名称,即标志符。
- value:必选参数,常量的值。
- case-insensitive:可选参数,指定是否大小写不敏感,默认是 false(大小写敏感)。
例如:
define('SITE', 'www.example.com');
echo SITE;
输出结果:www.example.com
1.2 const
在 PHP 5.3.0 以后,可以使用 const 关键字定义常量,定义常量不需要使用括号,如下所示:
const name = value;
例如:
const PI = 3.1415926;
echo PI;
输出结果:3.1415926
2. define 和 const 区别
两者都是用来定义常量,那么它们有什么区别呢?
2.1. define 和 const 的作用域不同
define() 定义的常量可以在全局范围内使用,包括函数内外,而 const 定义的常量仅能在代码当前作用域内使用,包括类中和函数中。
例如:
define('SITE', 'www.example.com');
function getSite() {
echo SITE;
}
getSite(); // 输出 www.example.com
const PI = 3.1415926;
class Circle {
const PI = 3.14;
public function getPI() {
echo self::PI;
}
}
echo PI; // 输出 3.1415926
$circle = new Circle();
$circle->getPI(); // 输出 3.14
2.2. const 只能定义非标量类型的常量
const 只能用于定义非标量类型的常量,如数组、对象和资源,而 define() 可以定义标量类型和复合类型的常量。
例如:
define('NUMBER', 100);
const ARR = [1, 2, 3];
echo NUMBER; // 输出 100
class Point {
const X = 1;
const Y = 2;
}
echo Point::X; // 输出 1
2.3. const 可以在类中定义常量
const 可以在类中定义常量,而 define() 不可以。
例如:
class Circle {
const PI = 3.1415926;
}
echo Circle::PI; // 输出 3.1415926
所以,在 PHP 5.3.0 以上版本,建议使用 const 来定义常量。
3. 总结
在 PHP 中,定义常量的方法有 define() 和 const,两者使用方法上有所不同,但都是用来为某些值设置常量,以便在整个脚本中使用。在 PHP 5.3.0 以上版本,建议使用 const 来定义常量,因为它是更为强大和灵活的。