![PHP+MySQL Web应用开发教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/889/33892889/b_33892889.jpg)
2.2 PHP常量及预定义常量
PHP有时使用常量实现数据在内存中的存储,使用常量名实现内存数据的按名存取。常量用于存储不经常改变的数据信息。常量的值被定义后,在程序的整个执行期间内,这个值都有效,并且不可再次对该常量进行赋值。PHP常量分为自定义常量和预定义常量。
2.2.1 声明和使用常量
1.使用define()函数声明自定义常量
在PHP中自定义常量在使用前必须定义,使用define()函数来定义常量,函数的语法如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/41_01.jpg?sign=1739260424-T5dL0Kc1brdvEqxPf0RiiOP10KTKORsD-0-3813e3667fb99eb3175704a2bccbac34)
define()函数的参数说明如表2-1所示。
表2-1 define函数的参数说明
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/42_01.jpg?sign=1739260424-fsmw8AkEc37eTJN2DJbEZNJDgbWswwzV-0-3d089a8cafa6bacc02507240ff0701d7)
注:函数中使用“[]”括起来,表示该参数是“可选参数”(不是必须的)。
2.使用constant()函数获取常量的值
获取指定常量的值和直接使用常量名输出的效果是一样的。但函数可以动态地输出不同的常量,在使用上要灵活、方便得多。constant()函数的语法如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/42_02.jpg?sign=1739260424-RumsPh401YKtYYqhefHvhdOC6GxFdiqE-0-72b8bbdb32a63ace26494f994bcc7348)
参数const_name为要获取常量的名称。如果成功则返回常量的值,失败则提示错误信息常量没有被定义。
3.使用defined()函数判断常量是否已经被定义
defined()函数的语法如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/42_03.jpg?sign=1739260424-XyUpkOLnO1LbNqxzK5pwkUrpietSB9Pc-0-04e7d300b658808a4b11dfc9c15c9a6f)
参数constant_name为要获取常量的名称,成功则返回true,否则返回false。
【例2-1】使用define()函数来定义名为MESSAGE的常量,使用constant()函数来获取该常量的值,最后再使用defined()函数来判断常量是否已经被定义。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/42_04.jpg?sign=1739260424-cHYPNzwzgfanO75dDikGouRtm4dT8nO7-0-110a8e62f0feced6de093ed33c0592ff)
运行结果如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/43_01.jpg?sign=1739260424-RJPvzvChqZ04tdaVSXWGKzEYeNnE7U2s-0-4b3c6b2a9fc193eadb504707d7214a8c)
注:常量定义时应注意以下几点。
1)常量必须使用define()函数定义,常量名前面不加前缀“$”符。
2)常量名由字母或者下划线开头,后面跟上任意数量的字母、数字或者下划线。
3)常量名可以全部大写、全部小写或者大小写混合,但是一般习惯是全部大写。
4)常量的作用域是全局的,不存在使用范围的问题,可以在程序任意位置进行定义和使用。
5)常量一旦被定义,其值不能在程序运行过程中修改,也不能被销毁。
2.2.2 预定义常量
内存中专门为常量的存储分配了一个空间:常量存储区。常量存储区是一块比较特殊的存储空间,位于该存储空间的常量是全局的,且在程序运行期间不能修改和销毁。PHP中提供了很多预定义常量,可以获取PHP中的信息,但不能任意更改这些常量的值。预定义常量的名称及其作用如表2-2所示。
表2-2 PHP中预定义常量
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/43_02.jpg?sign=1739260424-uNY9T0wAGQB4stjSHqnpt49cCzeDd1lW-0-c50c8515bcd38891379f42cd88dcd452)
注:__FILE__和__LINE__中的“__”是两条下划线,而不是一条“_”。表中以E_开头的预定义常量,是PHP的错误调试部分。如需详细了解,请参考error_reporting()函数的使用。
【例2-2】下面使用预定义常量来输出PHP中的一些信息。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/44_01.jpg?sign=1739260424-SssjuKzob6CeFZnIr4zZnltWETK9RGkn-0-4d5bed91356fc0ef67c3a6876c69a2d2)
运行结果如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/44_02.jpg?sign=1739260424-gwrzVV9yFLevBe5fm0eFMiJBDxjsZC1E-0-c6a25378b1c36d66caa84bde273fc271)