Syntax
Syntax
You can define a const
ant by using the define()-function or by using the const
keyword outside a class definition as of PHP 5.3.0. While define() allows a const
ant to be defined to an arbitrary expression, the const
keyword has restrictions as outlined in the next paragraph. Once a const
ant is defined, it can never be changed or undefined.
When using the const
keyword, only scalar data (boolean, integer, float and string) can be contained in const
ants prior to PHP 5.6. From PHP 5.6 onwards, it is possible to define a const
ant as a scalar expression, and it is also possible to define an array const
ant. It is possible to define const
ants as a resource, but it should be avoided, as it can cause unexpected results.
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 exampleTRUE
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). This does not apply to (fully) qualified constants, which will raise a fatal error if undefined. 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;
- Prior to PHP 5.3, 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. As of PHP 5.6 it is possible to define array
const
ant usingconst
keywords and as of PHP 7 arrayconst
ants can also be defined using define() You may use arrays inconst
ant scalar expressions (for example,const FOO = array(1,2,3)
0
;
), but the end result must be a value of allowed type.
Example #1 Defining Constants
<?php
define("CONSTANT", "Hello world."
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.
?>
Example #2 Defining Constants using the
const
keyword
<?php
// Works as of PHP 5.3.0
const CONSTANT = 'Hello World';
echo CONSTANT;
// Works as of PHP 5.6.0
const ANOTHER_CONST = CONSTANT.'; Goodbye World';
echo ANOTHER_CONST;
const ANIMALS = array('dog', 'cat', 'bird'
echo ANIMALS[1]; // outputs "cat"
// Works as of PHP 7
define('ANIMALS', array(
'dog',
'cat',
'bird'
)
echo ANIMALS[1]; // outputs "cat"
?>
Note
: As opposed to definingconst
ants using define(),const
ants defined using theconst
keyword must be declared at the top-level scope because they are defined at compile-time. This means that they cannot be declared inside functions, loops,if
statements ortry
/catch
blocks.Note
: Constants defined using theconst
keyword are always case-sensitive, whileconst
ants defined using define() may be case-insensitive.
See also Class Constants.
← Constants
Magic constants →
© 1997–2017 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://secure.php.net/manual/en/language.constants.syntax.php