![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=1739531525-i8ScGA14pOX9Znc524l9boGytXR7Ojni-0-c4133e8d6bbedd0848153b6105de218b)
define()函数的参数说明如表2-1所示。
表2-1 define函数的参数说明
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/42_01.jpg?sign=1739531525-uFG9qPJoBg7S33WkcIDfGXFKMc1MnJoT-0-be77a59bf7b3d90e81b05b0b403a9f77)
注:函数中使用“[]”括起来,表示该参数是“可选参数”(不是必须的)。
2.使用constant()函数获取常量的值
获取指定常量的值和直接使用常量名输出的效果是一样的。但函数可以动态地输出不同的常量,在使用上要灵活、方便得多。constant()函数的语法如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/42_02.jpg?sign=1739531525-BAxzF5E2u678SNwQvvpeTTIKD9CJRAlg-0-e5ad4fc09a1bebbe0e8b6bc296f26081)
参数const_name为要获取常量的名称。如果成功则返回常量的值,失败则提示错误信息常量没有被定义。
3.使用defined()函数判断常量是否已经被定义
defined()函数的语法如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/42_03.jpg?sign=1739531525-JUUEeghtVZr06jzhe5DEDZ04Y5Vrf1Zv-0-3c21a5286b4443a8e8ef5dd2b141e9a6)
参数constant_name为要获取常量的名称,成功则返回true,否则返回false。
【例2-1】使用define()函数来定义名为MESSAGE的常量,使用constant()函数来获取该常量的值,最后再使用defined()函数来判断常量是否已经被定义。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/42_04.jpg?sign=1739531525-puL52oc3y8nbhptj2z7P5xwsSfuBBTmG-0-729e4c013a94254e8eca484bb7c3be72)
运行结果如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/43_01.jpg?sign=1739531525-I10HDQuUGuSroZniPvba7dino4WO4Saf-0-9f590d30a18664940f3f110c896e0827)
注:常量定义时应注意以下几点。
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=1739531525-Cntf3Jg0T7z8n1pXGUs2CxPTbCSg9UWZ-0-d1aeb58bd5699a10ab235c62aabe48e9)
注:__FILE__和__LINE__中的“__”是两条下划线,而不是一条“_”。表中以E_开头的预定义常量,是PHP的错误调试部分。如需详细了解,请参考error_reporting()函数的使用。
【例2-2】下面使用预定义常量来输出PHP中的一些信息。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/44_01.jpg?sign=1739531525-QKEmgqp0yB2yObWm4wcaK6rXLIjZr7KP-0-153e52f5f04b39252b0a96463b60395f)
运行结果如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/44_02.jpg?sign=1739531525-ox7llFxSiGzQhf3lhjvpFM2WSqtbrZII-0-3f39defe432e932a260ab1217c139c3a)