A constant is a named value. Once defined, the value of the constant can not be changed.
A constant can be defined in one of two ways: as a c-constant using a
const-declaration, or as a d-constant by calling the library
function define
. However, the two approaches differ slightly.
Specifically:
- The name of a c-constant must comply with the lexical grammar for a name while that for a d-constant can contain any source character.
- If
define
is able to define the given name, it returnsTRUE
; otherwise, it returnsFALSE
.
The constants can only hold a value of a scalar type, an array or a resource.
The library function defined
reports if a given name (specified as
a string) is defined as a constant. The library function constant
returns the value of a given constant whose name is specified as a
string.
Examples
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
The following constants—sometimes referred to as magic constants—are automatically available to all scripts; their values are not fixed and they are case-insensitive:
Constant Name | Description |
---|---|
__CLASS__ |
string ; The name of the current class. From within a trait method, the name of the class in which that trait is used. If the current namespace is other than the default, the namespace name and \ are prepended, in that order. If used outside all classes, the value is the empty string. |
__COMPILER_HALT_OFFSET__ |
int ; When the __halt_compiler(); construct is used, this constant contains the byte offset in the source file immediately following the __halt_compiler(); token in this file. |
__DIR__ |
string ; The directory name of the script. A directory separator is only appended for the root directory. |
__FILE__ |
string ; The full name of the script. |
__FUNCTION__ |
string ; Inside a function, the name of the current function exactly as it was declared, with the following prepended: If a named namespace exists, that namespace name followed by "". If used outside all functions, the result is the empty string. For a method, no parent-class prefix is present. (See __METHOD__ and anonymous functions). |
__LINE__ |
int ; the number of the current source line. |
__METHOD__ |
string ; Inside a method, the name of the current method exactly as it was declared, with the following prepended, in order: If a named namespace exists, that namespace name followed by \ ; the parent class name or trait name followed by :: . If used outside all methods, the result is the same as for __FUNCTION__ . |
__NAMESPACE__ |
string ; The name of the current namespace exactly as it was declared. For the default namespace, the result is the empty string. |
__TRAIT__ |
string ; The name of the current trait. From within a trait method, the name of the current trait. If used outside all traits, the result is the empty string. |
Constant names beginning with __ are reserved for future use by the Engine.
The following constants are automatically available to all scripts; they are case-sensitive with the exception of NULL
, TRUE
and FALSE
:
Constant Name | Description |
---|---|
DEFAULT_INCLUDE_PATH |
string ; the fopen library function include path is used if it is not overridden by the php.ini setting include_path . |
E_ALL |
int ; All errors and warnings, as supported. |
E_COMPILE_ERROR |
int ; Fatal compile-time errors. This is like an E_ERROR , except that E_COMPILE_ERROR is generated by the scripting engine. |
E_COMPILE_WARNING |
int ; Compile-time warnings (non-fatal errors). This is like an E_WARNING , except that E_COMPILE_WARNING is generated by the scripting engine. |
E_CORE_ERROR |
int ; Fatal errors that occur during PHP's initial start-up. This is like an E_ERROR , except that E_CORE_ERROR is generated by the core of PHP. |
E_CORE_WARNING |
int ; Warnings (non-fatal errors) that occur during PHP's initial start-up. This is like an E_WARNING , except that E_CORE_WARNING is generated by the core of PHP. |
E_DEPRECATED |
int ; Deprecation notices. Enable this to receive warnings about code that will not work in future versions. |
E_ERROR |
int ; Fatal run-time errors. These indicate errors that cannot be recovered from, such as a memory allocation problem. Execution of the script is halted. |
E_NOTICE |
int ; Run-time notices. Indicate that the script encountered something that could indicate an error, but could also happen in the normal course of running a script. |
E_PARSE |
int ; Compile-time parse errors. |
E_RECOVERABLE_ERROR |
int ; Catchable fatal error. It indicates that a probably dangerous error occurred, but did not leave the Engine in an unstable state. If the error is not caught by a user defined handler (see the library function set_error_handler ), the application aborts as it was an E_ERROR . |
E_STRICT |
int ; Have PHP suggest changes to the source code to ensure the best interoperability. |
E_USER_DEPRECATED |
int ; User-generated error message. This is like an E_DEPRECATED , except that E_USER_DEPRECATED is generated in PHP code by using the library function trigger_error . |
E_USER_ERROR |
int ; User-generated error message. This is like an E_ERROR , except that E_USER_ERROR is generated in PHP code by using the library function trigger_error . |
E_USER_NOTICE |
int ; User-generated warning message. This is like an E_NOTICE , except that E_USER_NOTICE is generated in PHP code by using the library function trigger_error . |
E_USER_WARNING |
int ; User-generated warning message. This is like an E_WARNING , except that E_USER_WARNING is generated in PHP code by using the library function trigger_error . |
E_WARNING |
int ; Run-time warnings (non-fatal errors). Execution of the script is not halted. |
FALSE |
bool ; the case-insensitive Boolean value FALSE . |
INF |
float ; Infinity |
M_1_PI |
float ; 1/pi |
M_2_PI |
float ; 2/pi |
M_2_SQRTPI |
float ; 2/sqrt(pi) |
M_E |
float ; e |
M_EULER |
float ; Euler constant |
M_LN10 |
float ; log_e 10 |
M_LN2 |
float ; log_e 2 |
M_LNPI |
float ; log_e(pi) |
M_LOG10E |
float ; log_10 e |
M_LOG2E |
float ; log_2 e |
M_PI |
float ; Pi |
M_PI_2 |
floa t; pi/2 |
M_PI_4 |
float ; pi/4 |
M_SQRT1_2 |
float ; 1/sqrt(2) |
M_SQRT2 |
float ; sqrt(2) |
M_SQRT3 |
float ; sqrt(3) |
M_SQRTPI |
float ; sqrt(pi) |
NAN |
float ; Not-a-Number |
NULL |
null ; the case-insensitive value NULL . |
PHP_BINARY |
string ; the PHP binary path during script execution. |
PHP_BINDIR |
string ; the installation location of the binaries. |
PHP_CONFIG_FILE_PATH |
string ; location from which php.ini values were parsed |
PHP_CONFIG_FILE_SCAN_DIR |
string ; The directory containing multiple INI files, all of which were parsed on start-up. |
PHP_DEBUG |
int ; Indicates whether the engine was built with debugging enabled. |
PHP_EOL |
string ; the end-of-line terminator for this platform. |
PHP_EXTENSION_DIR |
string ; The directory to be searched by the library function dl when looking for runtime extensions. |
PHP_EXTRA_VERSION |
string ; the current PHP extra version. |
PHP_INT_MAX |
int ; the maximum representable value for an integer. |
PHP_INT_MIN |
int ; the minimum representable value for an integer. |
PHP_INT_SIZE |
int ; the number of bytes used to represent an integer. |
PHP_FLOAT_DIG |
int ; the number of decimal digits that can be rounded into a float and back without precision loss. |
PHP_FLOAT_EPSILON |
float ; the smallest representable positive number x , so that x + 1.0 != 1.0 . |
PHP_FLOAT_MIN |
float ; the smallest representable normalized floating point number larger than zero. |
PHP_FLOAT_MAX |
float ; the largest representable floating point number. |
PHP_MAJOR_VERSION |
int ; the current PHP major version |
PHP_MANDIR |
string ; the installation location of the manual pages. |
PHP_MAXPATHLEN |
int ; the maximum length of a fully qualified filename supported by this build. |
PHP_MINOR_VERSION |
int ; the current PHP minor version. |
PHP_OS |
string ; the current operating system. |
PHP_OS_FAMILY |
string ; the operating system family PHP was built for. Either of 'Windows', 'BSD', 'Darwin', 'Solaris', 'Linux' or 'Unknown'. |
PHP_PREFIX |
string ; the value to which "--prefix" was set when configured. |
PHP_RELEASE_VERSION |
int ; the current PHP release version. |
PHP_ROUND_HALF_DOWN |
int ; Round halves down. |
PHP_ROUND_HALF_EVEN |
int ; Round halves to even numbers. |
PHP_ROUND_HALF_ODD |
int ; Round halves to odd numbers. |
PHP_ROUND_HALF_UP |
int ; Round halves up. |
PHP_SAPI |
string ; the Server API for this build. |
PHP_SHLIB_SUFFIX |
string ; build-platform's shared library suffix. |
PHP_SYSCONFDIR |
string ; the PHP system configuration directory. |
PHP_VERSION |
string ; the current PHP version in the form "major.minor.release[extra]". |
PHP_VERSION_ID |
int ; the current PHP version. |
PHP_ZTS |
int ; Indicates whether the compiler was built with thread safety enabled. |
STDIN |
resource ; File resource that maps to standard input (php://stdin ). |
STDOUT |
resource ; File resource that maps to standard output (php://stdout ). |
STDERR |
resource ; File resource that maps to standard error (php://stderr ). |
TRUE |
bool ; the case-insensitive Boolean value TRUE . |
The members of the E_*
family have values that are powers of 2, so
they can be combined meaningfully using bitwise operators.
A constant may be defined inside or outside of functions, inside a class, or inside an interface.