PHP中的Define和Const区别

咱们常常把不常常变的值定义成常量,常量通常用所有大写来表示,前面不加美圆符号,那么define和const有什么区别呢?javascript

常量是一个简单的标识符。在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量)。常量默认大小写敏感。一般常量标识符老是大写的。php

能够用define()函数来定义常量。在php5.3.0之后,可使用const关键字在类定义的外部定义常量,php7能够定义数组常量了,先前版本const关键字只能在类(class)中使用。一个常量一旦被定义,就不能再改变或取消定义。java

复制代码
<?php
// 如下代码在 PHP 5.3.0 后能够正常工做
const USERNAME = '周伯通';
echo USERNAME.PHP_EOL;
echo constant("USERNAME");

const ZHOUUSERNAME = '周伯通九阴真经';

define('MYUSERNAME','周伯通九阴真经2');
echo "<pre>";
print_r(get_defined_constants());
?>
复制代码

常量和变量有以下不一样:数组

一、const是一个语言结构;而define是一个函数,能够经过第三个参数来指定是否区分大小写。true表示大小写不敏感,默认为falsephp7

二、const简单易读,编译时要比define快不少。函数

三、const可在类中使用,用于类成员常量定义,定义后不可修改;define不能在类中使用,可用于全局变量post

复制代码
<?php
class MyClass
{
    const USER = '周伯通';

    function showConstant() {
        echo  self::USER . PHP_EOL;
        echo  constant('USER'); // 注意:Warning: constant(): Couldn't find constant USER
    }
}
$class = new MyClass();
$class->showConstant();
复制代码

四、const是在编译时定义,所以必须处于最顶端的做用区域,不能在函数,循环及if条件中使用;而define是函数,也就是能调用函数的地方均可以使用this

复制代码
<?php
$x = true;
if ($x==1){
    //const FOO = 'BAR';    // 无效的invalid
}
if ($x==1){
    define('FOO', 'BAR'); // 有效的valid
    echo FOO;
}
复制代码
相关文章
相关标签/搜索