• 技术文章 >后端开发 >PHP问题

    php define有什么用

    青灯夜游青灯夜游2023-01-30 15:59:37原创57

    在php中,define()函数用于定义一个常量,语法“define($name, $value , $case_insensitive)”;参数“$case_insensitive”用于指定常量是否大小写敏感,默认是大小写敏感的,值设定为true则表示大小写不敏感。常量一旦被定义就不能被重新定义或者取消定义。

    本教程操作环境:windows7系统、PHP8版、DELL G3电脑

    define是PHP中的一个内置函数,用于定义一个常量。

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

    常量类似变量,不同之处在于:在设定以后,常量的值无法更改常量名,不需要开头的美元符号 ($),作用域不影响对常量的访问,常量值只能是字符串或数字。

    define()函数定义常量

    合法的常量名只能以字母和下划线开始,后面可以跟着任意长度的字母、数字或下划线。在 PHP 中可以通过 define() 函数定义一个常量,define() 函数的语法如下:

    define($name, $value , $case_insensitive)
    <?php
    header("Content-type:text/html;charset=utf-8");
    define('WebSite', 'php中文网');
    echo WebSite.'<br>';
    ?>

    1.png

    扩展知识:

    const关键字定义常量

    在php5.3.0以后,可以使用const关键字在类定义的外部定义常量,先前版本const关键字只能在类(class)中使用。

    语法:

    const 常量名 = 常量值;

    示例:

    <?php
    const FOO = 'BAR';
    echo FOO.'<br>';
    ?>

    define() 和 const 的区别:

    const是在编译时定义常量,而define()方法是在运行时定义常量。

    const不能用在if语句中, defne()能用在if语句中。

    if(...) {
        const FOO = 'BAR';//错误
    }
    if(...) {
        define('FOO', 'BAR');//正确
    }

    define()的一个常用场景是先判断常量是否已经定义再定义常量:

    if(defined('FOO)) {
        define('FOO', 'BAR')
    }

    const 定义常量时,值只能是静态标量(数字, 字符串, true,false, null), 而define()方法可以把任意表达式的值用作常量的值。从PHP5.6开始const也允许把表达式用作常量的值了。

    const BIT_5 = 1 << 5; //PHP5.6后支持,之前的PHP版本不支持
    define('BIT_5', 1 << 5);// 所有PHP版本都支持const 只允许简单的常量名,而define()可以把任何表达式的值用作常量名
    for ($i = 0; $i < 32; $i++) {
        define('BIT_' . $i, 1 << $i);
    }

    const 定义的常量常量名是大小写敏感的,而传递true给define()方法的第三个参数时可以定义大小写不敏感的常量。

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

    上面列举的都是const相较define()而言的一些缺点或者不灵活的地方,下面我们看一下为什么我个人推荐用const而不是define()来定义常量(除非要在上述列举的场景中定义常量)。

    const 具有更好的可读性,const是语言结构而不是函数,而且与在类中定义类常量的形式保持一致。

    const在当前的命名空间中定义常量, 而define()要实现类似效果必须在定义时传递完整的命名空间名称:

    namespace A\B\C;
    //To define the constant A\B\C\FOO:
    const FOO = 'BAR';
    define('A\B\C\FOO', 'BAR');

    推荐学习:《PHP视频教程

    以上就是php define有什么用的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php
    上一篇:php中get方式可以传数组吗 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • linux怎么使用yum安装php• 所需的php xsl模块未安装怎么办• php怎么实现日期转礼拜几• php中get方式可以传数组吗
    1/1

    PHP中文网