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]*
Exemplu 8-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");
?>
|
|
Notã:
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.
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.
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.
Notã:
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.
Exemplu 8-2. Defining Constants
<?php define("CONSTANT", "Hello world."); echo CONSTANT; // outputs "Hello world." echo Constant; // outputs "Constant" and issues a notice. ?>
|
|