解析php中const与define的应用区别

yipeiwu_com6年前PHP代码库
1、const用于类成员变量定义,一旦定义且不能改变其值。define定义全局常量,在任何地方都可以访问。
2、define不能在类中定义而const可以。
3、const不能在条件语句中定义常量
复制代码 代码如下:

if (...) {
    const FOO = 'BAR';    // invalid
}
but
if (...) {
    define('FOO', 'BAR'); // valid
}

4、const采用一个普通的常量名称,define可以采用表达式作为名称。
复制代码 代码如下:

const  FOO = 'BAR';
for ($i = 0; $i < 32; ++$i) {
    define('BIT_' . $i, 1 << $i);
}

5、const只能接受静态的标量,而define可以采用任何表达式。
复制代码 代码如下:

const BIT_5 = 1 << 5;    // invalid
but
define('BIT_5', 1 << 5); // valid

6、const 总是大小写敏感,然而define()可以通过第三个参数来定义大小写不敏感的常量
复制代码 代码如下:

define('FOO', 'BAR', true); 
echo FOO; // BAR
echo foo; // BAR

总结:
使用const简单易读,它本身是一个语言结构,而define是一个方法,用const定义在编译时比define快很多。

相关文章

在PHP中使用反射技术的架构插件使用说明

反射API的插件方法是基于在运行时决定程序的功能来实现的,也就是说,它允许创建可选的接口方法,并在首次使用时检测到这部分接口方法,只有在插件中存在这部分接口的情况下,它们才会被用到. 假...

深入PHP curl参数的详解

curl_setopt (PHP 4 >= 4.0.2) curl_setopt -- 为CURL调用设置一个选项 描述 bool curl_setopt (int ch, str...

PHP中遇到BOM、&lt;feff&gt;编码导致json_decode函数无法解析问题

昨天同事遇到一个奇怪的问题,就是以下代码,无法通过JSON校验,也无法通过PHP的json_decode函数解析。 复制代码 代码如下: [     { &...

php中将数组转成字符串并保存到数据库中的函数代码

复制代码 代码如下:/** * 将字符串转换为数组 * * @param    string  $data   字符串 * @...

PHP的简易冒泡法代码分享

很基础的东西,感觉代码还不够简洁,希望高手指导修改 复制代码 代码如下: <?php function BubbleSort($str){ for($i=0;$i<count...