企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 常量 ## 基本介绍 * 常量的定义是一个无法更改其值的变量。 * 常量名以字符或下划线开始,后面跟随任意数量的字母、数字、下划线。 * 常量名中的字母建议都是大写字母。 * 与变量不同,不应该在常量前面加`$`美元符号。 * 可以通过`define()`函数来定义常量。 * 可以通过`defined()`函数来检查是否定义了某常量。 * 可以通过`const`关键字来定义常量,但类里面不允许,这里官方文档有点错乱,看下面介绍: 1. 在 PHP 5.3.0 以后,可以使用 const 关键字在类定义之外定义常量,链接:http://php.net/manual/zh/language.constants.syntax.php 2. 可以把在类中始终保持不变的值定义为常量,链接:http://php.net/manual/zh/language.oop5.constants.php * 使用 `const` 关键字定义常量必须处于代码库最顶层的作用区域,因为用此方法是在编译时定义的。这就意味着不能在函数内,循环内以及 if 语句之内用 `const` 来定义常量。 * 常量只能包含标量数据(boolean,integer,float,string),还可以定义resource常量,但应尽量避免,除非你有准备好迎接突如其来的BUG。 * 通过`get_defined_constants()`函数可以获取所有已定义的常量。 * 常量和全局变量在不同的作用范围(命名空间)里,所以无法将常量用于可变变量。 * 如果在某个地方使用了一个未定义的函数,PHP会自动将其加上引号转成字符串,同时发出警告错误。 ## 和变量不同之处 * 常量前面没有美元符号($) * 常量只能用 `define()`函数 或 `const`关键字来定义,而不能通过赋值语句。 * 常量可以不用理会作用域的概念,它可以在任何地方定义和访问。 * 常量一旦定义就不能更改它的值或是删除。 * 常量的值只能是标量类型。 ## 魔术常量 * 魔术常量的名称通常由两个下划线作为前后缀,由PHP或扩展提供,通常在你想要使用之前它们就已经定义好了。 * 有八个特殊的魔术常量他们的值会随着代码而决定,而且还不区分大小写,如下: * `__LINE__`:文件中的当前行号。 * `__FILE__`:当前文件的绝对路径。 * `__DIR__`:当前目录的绝对路径。 * `__FUNTION__`:当前函数名称。 * `__CLASS__`:当前class类的名字。 * `__TRAIT__`:trait的名字。 * `__METHOD__`:当前类的方法名。 * `__NAMESPACE__`:当前命名空间的名称。 * 还有很多PHP系统预定义的常量,参考链接:http://php.net/manual/zh/reserved.constants.php