常量

一般

一个常量是一个 命名 值。一旦定义,常量的值就不能被改变。

常量可以通过两种方式之一定义:作为c-常量使用 const-声明,或者作为d-常量通过调用库函数 define。然而,这两种方法略有不同。具体来说

  • c-常量的名称必须符合名称的词法语法,而 d-常量的名称可以包含任何源代码字符。
  • 如果 define 能够定义给定的名称,它将返回 TRUE;否则,它将返回 FALSE

常量只能保存 标量类型、数组或 资源 的值。

库函数 defined 报告给定名称(作为字符串指定)是否定义为常量。库函数 constant 返回给定常量的值,其名称以字符串形式指定。

示例

const MAX_HEIGHT = 10.5;              // define two (case-sensitive) c-constants
const UPPER_LIMIT = MAX_HEIGHT;
define('COEFFICIENT_1', 2.345, TRUE); // define a case-insensitive d-constant (deprecated)
define('FAILURE', FALSE, FALSE);      // define a case-sensitive d-constant

上下文相关的常量

以下常量 - 有时被称为魔术常量 - 自动可用于所有脚本;它们的值不是固定的,并且不区分大小写

常量名称描述
__CLASS__string; 当前类的名称。从特征方法内部,使用该特征的类的名称。如果当前命名空间不是默认命名空间,则命名空间名称和 \ 将按此顺序前缀。如果在所有类之外使用,则值为空字符串。
__COMPILER_HALT_OFFSET__int; 当使用 __halt_compiler(); 结构时,此常量包含源文件中紧跟此文件中 __halt_compiler(); 标记后的字节偏移量。
__DIR__string; 脚本的目录名称。仅对根目录追加目录分隔符。
__FILE__string; 脚本的完整名称。
__FUNCTION__string; 在函数内部,当前函数的名称与声明时完全相同,并带有以下前缀:如果存在命名空间,则命名空间名称后跟 "。如果在所有函数之外使用,则结果为空字符串。对于方法,没有父类前缀。(参见 __METHOD__匿名函数)。
__LINE__int; 当前源代码行的行号。
__METHOD__string; 在方法内部,当前方法的名称与声明时完全相同,并带有以下前缀,按顺序:如果存在命名空间,则命名空间名称后跟 \; 父类名称或特征名称后跟 ::。如果在所有方法之外使用,则结果与 __FUNCTION__ 相同。
__NAMESPACE__string; 当前命名空间的名称,与声明时完全相同。对于默认命名空间,结果为空字符串。
__TRAIT__string; 当前特征的名称。从特征方法内部,当前特征的名称。如果在所有特征之外使用,则结果为空字符串。

以 __ 开头的常量名称为引擎将来使用保留。

核心预定义常量

以下常量自动可用于所有脚本;它们区分大小写,除了 NULLTRUEFALSE

常量名称描述
DEFAULT_INCLUDE_PATHstring; 如果未被 php.ini 设置 include_path 覆盖,则使用 fopen 库函数包含路径。
E_ALLint; 所有错误和警告,只要支持。
E_COMPILE_ERRORint; 编译时致命错误。这与 E_ERROR 相似,不同的是 E_COMPILE_ERROR 由脚本引擎生成。
E_COMPILE_WARNINGint; 编译时警告(非致命错误)。这与 E_WARNING 相似,不同的是 E_COMPILE_WARNING 由脚本引擎生成。
E_CORE_ERRORint; PHP 初始启动时发生的致命错误。这与 E_ERROR 相似,不同的是 E_CORE_ERROR 由 PHP 的核心生成。
E_CORE_WARNINGint; PHP 初始启动时发生的警告(非致命错误)。这与 E_WARNING 相似,不同的是 E_CORE_WARNING 由 PHP 的核心生成。
E_DEPRECATEDint; 弃用通知。启用此选项以接收有关将来版本中将无法使用的代码的警告。
E_ERRORint; 运行时致命错误。这些表示无法恢复的错误,例如内存分配问题。脚本执行将停止。
E_NOTICEint; 运行时通知。表示脚本遇到了可能表示错误的内容,但也可能在脚本正常运行过程中发生。
E_PARSEint; 编译时解析错误。
E_RECOVERABLE_ERRORint; 可捕获致命错误。它表示可能发生了危险的错误,但没有使引擎处于不稳定状态。如果错误未被用户定义的处理程序捕获(参见库函数 set_error_handler),应用程序将像 E_ERROR 一样中止。
E_STRICTint; 让 PHP 建议对源代码进行更改,以确保最佳的互操作性。
E_USER_DEPRECATEDint; 用户生成的错误消息。这与 E_DEPRECATED 相似,不同的是 E_USER_DEPRECATED 是在 PHP 代码中使用库函数 trigger_error 生成的。
E_USER_ERRORint; 用户生成的错误消息。这与 E_ERROR 相似,不同的是 E_USER_ERROR 是在 PHP 代码中使用库函数 trigger_error 生成的。
E_USER_NOTICEint; 用户生成的警告消息。这与 E_NOTICE 相似,不同的是 E_USER_NOTICE 是在 PHP 代码中使用库函数 trigger_error 生成的。
E_USER_WARNINGint; 用户生成的警告消息。这与 E_WARNING 相似,不同的是 E_USER_WARNING 是在 PHP 代码中使用库函数 trigger_error 生成的。
E_WARNINGint; 运行时警告(非致命错误)。脚本执行不会停止。
FALSEbool; 不区分大小写的布尔值 FALSE
INFfloat; 无穷大
M_1_PIfloat; 1/pi
M_2_PIfloat; 2/pi
M_2_SQRTPIfloat; 2/sqrt(pi)
M_Efloat; e
M_EULERfloat; 欧拉常数
M_LN10float; log_e 10
M_LN2float; log_e 2
M_LNPIfloat; log_e(pi)
M_LOG10Efloat; log_10 e
M_LOG2Efloat; log_2 e
M_PIfloat; Pi
M_PI_2float; pi/2
M_PI_4float; pi/4
M_SQRT1_2float; 1/sqrt(2)
M_SQRT2float; sqrt(2)
M_SQRT3float; sqrt(3)
M_SQRTPIfloat; sqrt(pi)
NANfloat; 非数字
NULLnull; 不区分大小写的 NULL 值。
PHP_BINARYstring; 脚本执行期间的 PHP 二进制路径。
PHP_BINDIRstring; 二进制文件的安装位置。
PHP_CONFIG_FILE_PATHstring; 解析 php.ini 值的位置
PHP_CONFIG_FILE_SCAN_DIRstring; 包含多个 INI 文件的目录,所有这些文件都在启动时解析。
PHP_DEBUGint; 表示引擎是否在启用调试的情况下构建。
PHP_EOLstring; 此平台的换行符。
PHP_EXTENSION_DIRstring; 库函数 dl 在查找运行时扩展时要搜索的目录。
PHP_EXTRA_VERSIONstring; 当前 PHP 额外版本。
PHP_INT_MAXint; 整数的最大可表示值。
PHP_INT_MINint; 整数的最小可表示值。
PHP_INT_SIZEint; 用于表示整数的字节数。
PHP_FLOAT_DIGint; 可以四舍五入到浮点数并返回而不会丢失精度的十进制位数。
PHP_FLOAT_EPSILONfloat; 最小的可表示正数 x,使得 x + 1.0 != 1.0
PHP_FLOAT_MINfloat; 最小的可表示的规范化浮点数,大于零。
PHP_FLOAT_MAXfloat; 最大的可表示的浮点数。
PHP_MAJOR_VERSIONint; 当前 PHP 主版本
PHP_MANDIRstring; 手册页的安装位置。
PHP_MAXPATHLENint; 此版本支持的完全限定文件名最大长度。
PHP_MINOR_VERSIONint; 当前 PHP 次版本。
PHP_OSstring; 当前操作系统。
PHP_OS_FAMILYstring; PHP 为其构建的操作系统系列。可能是 "Windows"、"BSD"、"Darwin"、"Solaris"、"Linux" 或 "Unknown" 中的任何一个。
PHP_PREFIXstring; 配置时 “–prefix” 设置的值。
PHP_RELEASE_VERSIONint; 当前 PHP 发行版本。
PHP_ROUND_HALF_DOWNint; 将一半四舍五入。
PHP_ROUND_HALF_EVENint; 将一半四舍五入到偶数。
PHP_ROUND_HALF_ODDint; 将一半四舍五入到奇数。
PHP_ROUND_HALF_UPint; 将一半五入。
PHP_SAPIstring; 此版本的服务器 API。
PHP_SHLIB_SUFFIXstring; 构建平台的共享库后缀。
PHP_SYSCONFDIRstring; PHP 系统配置目录。
PHP_VERSIONstring; 当前 PHP 版本,格式为“主版本.次版本.修订版[附加]”。
PHP_VERSION_IDint; 当前 PHP 版本。
PHP_ZTSint; 指示编译器是否启用线程安全。
STDINresource; 映射到标准输入 (php://stdin) 的文件资源。
STDOUTresource; 映射到标准输出 (php://stdout) 的文件资源。
STDERRresource; 映射到标准错误 (php://stderr) 的文件资源。
TRUEbool; 不区分大小写的布尔值 TRUE

E_* 家族的成员的值是 2 的幂,因此可以使用按位运算符将它们有意义地组合。

用户定义常量

可以在函数内部或外部、内部或接口内部定义常量。