PHP - Class Constants



PHP allows an identifier in a class to be defined as a "class constant" with a constant value, the one that remains unchanged on a per class basis. To differentiate from a variable or property within class, the name of the constant is not prefixed with the usual "$" symbol and is defined with the "const" qualifier. Note that a PHP program can also have a global constant created using the define() function.

The default visibility of a constant is public, although other modifiers may be used in the definition. The value of a constant must be an expression and not a variable, nor a function call/property. The value of a constant is accessed through the class name using the scope resolution operator. Inside a method though, it can be referred to through self variable.

Accessing Class Constants in PHP

Here is the syntax you can follow for accessing class constants in PHP −

class SomeClass { const CONSTANT = 'constant value'; } echo SomeClass::CONSTANT;

Constant names are case sensitive. Conventionally, the names of constants are in upper case.

Advertisement
-PlayStream
00:00
00:00

Key Points About Class Constants

Here are some key points about class constant which you need to know before working with it −

  • Immutability: Once it is set, the value cannot be modified.

  • Scope: Class constants are accessible within the class that defines them .

  • Static: They are automatically static, so you do not need to create a class instance to access them.

Why Use Class Constants?

Using class constants provides many advantages −

  • Readability: Makes your code easier to read and understand.

  • Maintainability: If you need to modify the value, do it only once.

  • Avoid Magic Numbers: By avoiding magic numbers or strings in your code, you can better understand what each value represents.

Example

This example shows how a Class Constant is defined and accessed −

<?php class square { const PI=M_PI; var $side=5; function area() { $area=$this->side**2*self::PI; return $area; } } $s1=new square(); echo "PI=". square::PI . "\n"; echo "area=" . $s1->area(); ?>

Output

It will produce the following output −

PI=3.1415926535898
area=78.539816339745

Class Constant as Expression

In this example, the class constant is assigned an expression. This code defines a global constant PI, which is the ratio of X and Y, as well as a class square with a method for calculating the area using the constant −

<?php const X = 22; const Y=7; class square { const PI=X/Y; var $side=5; function area() { $area=$this->side**2*self::PI; return $area; } } $s1=new square(); echo "PI=". square::PI . "\n"; echo "area=" . $s1->area(); ?>

Output

It will produce the below output −

PI=3.1428571428571
area=78.571428571429

Class Constant Visibility Modifiers

This program generates a class example that has a public constant X and a private constant Y. Accessing the private constant outside of the class results in an error. Take a look at the following example −

<?php class example { const X=10; private const Y=20; } $s1=new example(); echo "public=". example::X. "\n"; echo "private=" . $s1->Y ."\n"; echo "private=" . example::Y ."\n"; ?>

Output

It will generate the following output −

public=10
PHP Notice:  Undefined property: example::$Y in  line 11

private=
PHP Fatal error:  Uncaught Error: Cannot access private const example::Y
Advertisements