首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP定义常量的区别,define() const

正文 在PHP5.3,有两种方法可以定义常量: 使用const关键字 使用define()方法 const FOO = 'BAR'; define('FOO','BAR'); 这两种方式的根本区别在于...不过在PHP5.6之后const也可以接受常量的表达式了: const BIT_5 = 1 << 5; // 在PHP5.6之后有效,之前无效 define('BIT_5', 1 << 5); /...而define目前是不支持这一功能的,但是该功能会在PHP7被实现: const FOO = [1, 2, 3]; // 在PHP 5.6有效 define('FOO', [1, 2, 3])...; // 在PHP 5.6无效, 在PHP 7.0有效 因为const在编译时就被执行了,所以它在速度上要比define快一点。...人们甚至发明了诸如apc_load_constantshide来避免这个问题 define相比,const能使定义常量的效率提高一倍(在配置有XDebug的开发机器上,这个差异还会更大)。

1.1K20

PHPdefine() const定义常量的区别详解

本文实例讲述了PHPdefine() const定义常量的区别。分享给大家供大家参考,具体如下: 前言 今天在Stackoverflow又看到一个很有趣的文章,所以翻译过后摘了过来。...文章是由PHP开发成员之一的NikiC写的,权威性自然毋庸置疑 正文 在PHP5.3,有两种方法可以定义常量: 使用const关键字 使用define()方法 const FOO = 'BAR'; define...而define目前是不支持这一功能的,但是该功能会在PHP7被实现: const FOO = [1, 2, 3]; // 在PHP 5.6有效 define('FOO', [1, 2, 3]);...人们甚至发明了诸如apc_load_constantshide来避免这个问题 define相比,const能使定义常量的效率提高一倍(在配置有XDebug的开发机器上,这个差异还会更大)。...更多关于PHP相关内容感兴趣的读者可查看本站专题:《php常用函数技巧总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php+

1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    const#define的区别、优点

    const#define的区别 编译器处理方式不同 define宏是在预处理阶段展开。 补充:预处理器根据以#开头的命令,修改原始的程序。...比如我们常见的#include 命令告诉处理器读取系统头文件stdio.h的内容,并把它直接插入程序文本。咱们的#define也是,仅仅是单纯的文本替换。...存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。 const常量会在内存中分配(可以是堆也可以是栈)。 const  可以节省空间,避免不必要的内存分配。...例如:   #define PI 3.14159 //常量宏 const doulbe Pi=3.14159; //此时并未将Pi放入ROM double i=Pi; //此时为Pi分配内存,以后不再分配...const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程只有一份拷贝,而 #define定义的常量在内存中有若干个拷贝

    1.7K10

    CC++define定义的常量const常量

    常量是在程序不能更改的量,在C/C++中有两种方式定义常量,一种是利用define宏定义的方式,一种是C++中新提出来的const型常变量,下面主要讨论它们之间的相关问题; define定义的常量:...而我们看到在使用const 定义的时候并没有这个替换的操作,使用正常的变量无异。...而我们看到在使用const 定义的时候并没有这个替换的操作,使用正常的变量无异。...这个关键字保证每次在使用变量时都去内存读取。 我们可以总结出constdefine的几个不同之处: 1)define是一个预处理指令,const是一个关键字。...4)define定义的宏在代码段不可寻址,const定义的常量是可以寻址的,在数据段或者栈段

    1.7K10

    iOS defineconst常量区别?

    define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。因此程序运行时,常量表并没有用define定义的常量,系统不为它分配内存。...const定义的常量,在程序运行时在常量表,系统为它分配内存。 ●define定义的常量,预处理时只是直接进行了替换。所以编译时不能进行数据类型检验。...const定义的常量,在编译时进行严格的类型检验,可以避免出错。 ●const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。...●define可以定义一些简单的函数,const不可以 ●有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试

    44330

    【答疑解惑】defineconst区别

    在c/c++程序我们经常使用到它们,由于使用比较频繁,我们就来做一下对比它们各自的作用。从以下几个方面来说明 1、编译器处理方式不同   define宏是在预处理阶段展开。   ...const常量是编译运行阶段使用。 2、类型和安全检查不同   define宏没有类型,不做任何类型检查,仅仅是展开。   const常量有具体的类型,在编译阶段会执行类型检查。...3、存储方式不同   define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。   const常量会在内存中分配。 const 可以节省空间,提高执行效率,避免不必要的内存分配。...const 修饰函数的返回值、修饰类的成员函数(任何不需要修改数据成员的函数都应该使用const修饰)。

    668120

    如何正确使用const(常量),define(宏)

    前言 在开发,也许我们会经常使用到宏定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用宏定义const修饰符。...本篇主要介绍在开发怎么正确使用constdefine(宏定义) 当我们想定义全局共用的一些数据时,比如通知名字,动画时长等等,我们可以用宏、常量、变量: 宏: // 注意后面不需要带符号...甚至有相同后缀的字符串也可以优化,你可以使用GCC编译测试,Hello worldworld两个字符串,只存储前面一个。...define在预处理阶段进行替换,const常量在编译阶段使用; define不做类型检查,只进行替换,const常量有数据类型,会执行类型检查; define不能调试,const常量可以调试; define...定义的常量在替换后运行过程,会不断占用内存,而const定义的常量存储在数据段,只有一份拷贝,效率更高; define可以定义函数,const不可以。

    2.3K70

    如何正确使用const(常量),define(宏)

    前言 在开发,也许我们会经常使用到宏定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用宏定义const修饰符。...本篇主要介绍在开发怎么正确使用constdefine(宏定义) 当我们想定义全局共用的一些数据时,比如通知名字,动画时长等等,我们可以用宏、常量、变量: 宏: // 注意后面不需要带符号...甚至有相同后缀的字符串也可以优化,你可以使用GCC编译测试,Hello worldworld两个字符串,只存储前面一个。...define在预处理阶段进行替换,const常量在编译阶段使用; define不做类型检查,只进行替换,const常量有数据类型,会执行类型检查; define不能调试,const常量可以调试; define...定义的常量在替换后运行过程,会不断占用内存,而const定义的常量存储在数据段,只有一份拷贝,效率更高; define可以定义函数,const不可以。

    87520

    iOS学习——iOS 宏(define)常量(const)的正确使用

    概述   在iOS开发,经常用到宏定义,或用const修饰一些数据类型,经常有开发者不知怎么正确使用,导致项目中乱用宏const修饰。你能区分下面的吗?知道什么时候用吗?...const *HSCoder = @"汉斯哈哈哈"; NSString * const HSCoder = @"汉斯哈哈哈"; 当我们想全局共用一些数据时,可以用宏、变量、常量 //宏 #define...甚至有相同后缀的字符串也可以优化,你可以用GCC 编译测试,"Hello world" "world" 两个字符串,只存储前面一个。...//在"constants.h"文件,声明常量: extern NSString *const XUserName; //然后在“constants.m”定义他: NSString *const...(OC没有类似C++的名字空间的概念) 所以当你在你自己的.m文件需要声明一个只有你自己可见的局部变量(k开头)的变量的时候一定要同时使用“static”和“const”两个符号。

    1.8K30

    iOS学习——#defineconst、typedef的区别

    编译器通常不为普通const常量分配存储空间,而是保存于符号表,这使得它成为一个编译期间的常量,没有存储读内存的操作,使得它的效率更高。   ...const 宏在预编译时处理(宏在编译开始之前就会被替换);而const会在编译时被处理 #define宏没有类型,宏不做任何类型检查,不会报编译错误,只是替换;而const常量有具体的类型,会编译检查...;而const常量会在内存中分配(可以是堆也可以是栈),const 可以节省空间,避免不必要的内存分配 宏 const #define PI 3.14159 //常量宏 const doulbe Pi...,所以,const定义的常量在程序运行过程只有一份拷贝(因为是全局的只读变量,存在静态区),而 #define定义的常量在内存中有若干个拷贝。...编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表,这使得它成为一个编译期间的常量,没有了存储读内存的操作,使得它的效率也很高。

    81340

    definetypedef

    在嵌入式开发中经常会用到宏定义define和typedef,它们俩在使用上有些类似,容易混淆,那么他们有什么区别呢? 1....二者的本质 #define是宏定义,它是一种预处理命令,在预处理的时候进行简单的文本替换操作,其表达式一般如下: #define 标识符 字符串 /*宏定义结尾不加;*/ 在预处理时会把自己定义的标识符替换为宏定义的字符串...,比如: #define PI 3.14 这个宏定义的作用是把代码的PI替换为3.14,在程序遇到PI就可以把他看作3.14这个常数(前提是在宏定义的作用域内)。...断言 断言一般会用做函数入口参数的有效性判断,在STM32的HAL库中就有很多应用,比如在STM32F429断优先级分组配置函数(此处只说断言应用,不对STM32F429的中断分组做过多讨论): void...* @retval None */ #define assert_param(expr) ((expr) ?

    6710

    C++constCconst使用对比

    超实用的const用法 二、c++const用法: 既然今天主题是C++const用法,想都不用想,c++const的用法和c语言里面的const用法肯定有不一样的地方,下面我们来看具体的用法.../a.out start c=0 *p=6 三、c++const宏的区别: 1,const 常量由编译器处理; 2,编译器对 const 常量进行类型检查和作用域检查; 3,宏定义由预处理器处理...,在运行期没有用,这里我们先举例一个c环境的代码,然后再到c++环境编译,做一个简单的对比,方便大家理解: #include void f() { #define...于是乎我把上面的那个g()函数里面的注释拿掉,再进行编译: #include void f() { #define a 3 const int b...四、总结: 1, C 语言不通,C++ const 不是只读变量; 2,C++ const 是一个真正意义上的常量; 3,C++ 编译器可能会为 const 常量非配空间; 4,C+

    64030

    3分钟短文|PHP 定义常量,我该用define还是const?这下不迷茫了

    引言 我们今天说一下 PHP 编程,定义一个常量所使用的两种方法。有哪些区别,以及哪种是最佳实践? ? 问题 有开发者说,我在学习编写 PHP,可是定义常量的方法很是让人迷惑。...比如有下面这样的写法: define('FOO', 1); const FOO = 1; 而且在框架,也大量地掺杂着两种定义方法的混用。到底哪一个好?...深层原因 对于 PHP5.3 及以上,定义一个常量有两种方法,一个是用 const 关键字,一个是使用 define 函数。...1 - const使代码更好读。 它是一种语言构造,而不是函数,并且您在类定义常量的方式保持一致。 2 - const作为一种语言构造,可以通过自动化工具进行静态分析。...但是,PHP 7的两种情况都支持数组。

    92810

    PHPconst,static,public,private,protected的区别

    : 表示受保护的,只有本类或子类或父类可以访问; 定义常量也可用 define 定义。...constdefine在定义常量时会有如下区别: const用于类成员变量,一经定义不可修改,define用于全局常量,不可用于类成员变量的定义, const可在类中使用,define不能。...const定义的常量大小写敏感,而define可通过第三个参数(为TRUE表示大小写不敏感)来指定大小写是否敏感。 在运行时定义一个常量。...define('TXE',100,TRUE); const不能在条件语句中定义常量,而define函数可以。...if($a>10){define('LE','hello');} class Demo { //定义常量【自php5.3后】,一个常量是属于一个类的,而不是某个对象的 //不可改变的

    67650
    领券