PHP Constants

Revision as of 14:32, 29 May 2007 by Neil (Talk | contribs) (Using a Variable as a Constant Name)

Revision as of 14:32, 29 May 2007 by Neil (Talk | contribs) (Using a Variable as a Constant Name)

If you look up the word constant in a dictionary it will probably tell you that the word is used to describe something that is non-changing and non-variable, and this is exactly the purpose of constants in PHP. A PHP constatnt is the opposite of a variable in that once it has been defined it cannot be changed.

Constants are particularly useful for defining a value that you frequently need to refer to that does not ever change. For example, you might define a constant called INCHES_PER_YARD that contains the number of inches in a yard. Since this is a value that typically doesn't change it makes sense to define it as a constant. Conversely, a value that is likely to change, such as the Dollar to Yen exchange rate is best defined as a variable.

PHP constants are said to have global scope. This basically means that once you have defined a constant it is accessible from any function or object in your script.

In addition, PHP provides a number of built-in constants that are available for use to make life easier for the PHP developer.

Defining a PHP Constant

Rather than using the assignment operator as we do when defining variables, constants are created using the define() function. Constants also lack the $ prefix of variable names.

The define function takes two arguments, the first being the name you wish to assign to the constant, and the second the value to assign to that name.

Constant name are case sensitive. Althouth it is not a requirement, convention carried over from other programming languages suggests that constants should be named in all upper case characters. The following example demonstrates the use of the define() function to specify a constant:

<?php
define('INCHES_PER_YARD', 36);
?>

Once defined the constant value can be accessed at any time just by referring to the name. For example, if we define a string constant as follows:

<?php
define('WELCOME_MESSAGE', "Welcome to my World");
?>

we can subsequently access that value anywhere in our script. For example to display the value:

echo WELCOME_MESSAGE;

Checking if a PHP Constant is Defined

It can often be useful to find out if a constant is actually defined. This can be achieved using the PHP defined() function. The defined() function takes the name of the constant to be checked as an argument and returns a value of true or false (i.e 1 or 0) to indicate whether that constant exists.

For example, let's assume we wish to find out if a constant named MY_CONSTANT is defined. We can simply call the defined() function passing through the name, and then test the result using an if .. else statement (see PHP Looping and Flow Control for more details on using if .. else):

<?php
define ('MY_CONSTANT',  36);

if (defined('MY_CONSTANT')
{
    echo "Constant is defined";
}
else
{
    echo "Constant is not defined";
}
?>

Using a Variable as a Constant Name

Predefined PHP Constants