zoukankan      html  css  js  c++  java
  • PHP中的Define和Const区别

    我们经常把不经常变的值定义成常量,常量一般用全部大写来表示,前面不加美元符号,那么define和const有什么区别呢?

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

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

    <?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());
    ?>

    常量和变量有如下不同:

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

    2、const简单易读,编译时要比define快很多。

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

    <?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();

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

    <?php
    $x = true;
    if ($x==1){
        //const FOO = 'BAR';    // 无效的invalid
    }
    if ($x==1){
        define('FOO', 'BAR'); // 有效的valid
        echo FOO;
    }
  • 相关阅读:
    报错[Vue warn]:Invalid prop:custom validator check failed for prop "percentage"
    Archlinux系统配置学习笔记(一)
    Archlinux安装笔记
    KnockoutJs学习笔记(十二)
    KnockoutJs学习笔记(十一)
    KnockoutJs学习笔记(十)
    KnockoutJs学习笔记(九)
    KnockoutJs学习笔记(八)
    KnockoutJs学习笔记(七)
    KnockoutJs学习笔记(六)
  • 原文地址:https://www.cnblogs.com/phpper/p/9234553.html
Copyright © 2011-2022 走看看