Constants
Table of Contents
A constant is an identifier (name) for a simple value. As the name
suggests, that value cannot change during the execution of the
script (except for
magic constants, which aren't actually constants).
A constant is case-sensitive by default. By convention, constant
identifiers are always uppercase.
The name of a constant follows the same rules as any label in PHP. A
valid constant name starts with a letter or underscore, followed
by any number of letters, numbers, or underscores. As a regular
expression, it would be expressed thusly:
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
Example #1 Valid and invalid constant names
<?php
// Valid constant names
define("FOO", "something");
define("FOO2", "something else");
define("FOO_BAR", "something more");
// Invalid constant names
define("2FOO", "something");
// This is valid, but should be avoided:
// PHP may one day provide a magical constant
// that will break your script
define("__FOO__", "something");
?>
Note:
For our purposes here, a letter is a-z, A-Z, and the ASCII
characters from 127 through 255 (0x7f-0xff).
Like superglobals, the scope of a constant is global. You
can access constants anywhere in your script without regard to scope.
For more information on scope, read the manual section on
variable scope.
Syntax
You can define a constant by using the
define()-function. Once a constant is defined,
it can never be changed or undefined.
Only scalar data (boolean, integer,
float and string) can be contained
in constants.
Do not define resource constants.
You can get the value of a constant by simply specifying its name.
Unlike with variables, you should not prepend
a constant with a $.
You can also use the function constant() to
read a constant's value if you wish to obtain the constant's name
dynamically.
Use get_defined_constants() to get a list of
all defined constants.
Note:
Constants and (global) variables are in a different namespace.
This implies that for example TRUE and
$TRUE are generally different.
If you use an undefined constant, PHP assumes that you mean
the name of the constant itself, just as if you called it as
a string (CONSTANT vs "CONSTANT"). An error of level
E_NOTICE will be issued
when this happens. See also the manual entry on why
$foo[bar] is
wrong (unless you first define()
bar as a constant). If you simply want to check if a
constant is set, use the defined() function.
These are the differences between constants and variables:
-
Constants do not have a dollar sign ($)
before them;
-
Constants may only be defined using the
define() function, not by simple assignment;
-
Constants may be defined and accessed anywhere without regard
to variable scoping rules;
-
Constants may not be redefined or undefined once they have been
set; and
-
Constants may only evaluate to scalar values.
Example #2 Defining Constants
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.
?>
See also Class Constants.