如何解释PHP宏定义?

Kul*_*ksi 2 php macros c-preprocessor

对于C/C++,我认为预编译器在编译器编译程序之前执行宏处理,这就是为什么宏名称必须是文字或绝对的,没有变量允许声明宏名称.

在PHP的情况下,我们可以这样声明:DEFINE($ name,$ value); 这意味着,解释器首先解释变量然后定义宏,即像运行时宏处理.

这实际上产生了一个疑问,那真的是宏观处理吗?如果不是那么引入像'define'这样的关键字的目的是什么?有不能改变的价值?

或者,如果有宏观处理,那么任何人都可以解释,它是如何工作的?

Art*_*ct2 5

为了完整性的缘故,有是在编译时定义的常数:

const MY_CONSTANT = 'something';
Run Code Online (Sandbox Code Playgroud)

与使用define()定义常量相反,使用const关键字定义的常量必须在顶级作用域声明,因为它们是在编译时定义的.这意味着它们不能在函数,循环或if语句中声明.

从PHP手册.

这是针对当前的PHP版本5.3.