Summary: in this tutorial, you will learn about PHP class constants and how to use them effectively.
Introduction to the PHP class constants
Sometimes, you need to define a constant that is specific to a class. In this case, you can use the PHP class constants.
To define a constant of a class, you use the const
keyword. For example:
<?php
class Circle
{
const PI = M_PI;
}
Code language: Python (python)
In this example, we define the PI
constant in the Circle
class. By convention, a constant name is in uppercase. If the constant name contains multiple words, you can use the underscore (_
) to separate the words, for example MY_CONSTANT
.
Since a constant is defined per class, not per instance of the class, you use the self
keyword to reference the constant inside the class. For example:
<?php
class Circle
{
const PI = M_PI;
private $radius;
public function __construct(float $radius)
{
$this->radius = $radius;
}
public function area(): float
{
return self::PI * $this->radius ** 2;
}
}
Code language: Python (python)
In this example, we define the Circle
class with the $radius
property. Inside the area()
method, we calculate the area of the circle using the radius and the self::PI
constant.
When you define a constant in a class, its visibility is public by default. It means that you can also access the constant outside of the class.
To reference to the constant outside the class, you use the class name and ::
operator like this:
<?php
// Circle class
// ...
echo Circle::PI;
Code language: Python (python)
Note that you can reference the class using a variable with the value is the class name. For example:
<?php
$className = 'Circle';
echo $className::PI;
Code language: Python (python)
In this example, instead of using Circle::PI
, we use the $className::PI
to reference the PI constant.
Since PHP 7.1.0, you can use visibility modifier keywords such as private
, protected
, and public
with the class constant. For example:
<?php
class Circle
{
private const PI = M_PI;
// other methods
}
Code language: Python (python)
In this example, the PI
constant is private and cannot be used outside the Circle
class.
It’s possible to define a class constant using a constant expression. A constant expression is an expression that contains only constants. For example:
<?php
class MyClass
{
const ONE_THIRD = 1/3;
}
Code language: Python (python)
PHP class constants and inheritance
The following example illustrates how to define a constant in the parent class and override it in the child class. For example:
<?php
abstract class Model
{
protected const TABLE_NAME = '';
public static function all()
{
return 'SELECT * FROM ' . static::TABLE_NAME;
}
}
class User extends Model
{
protected const TABLE_NAME = 'users';
}
class Role extends Model
{
protected const TABLE_NAME = 'roles';
}
echo User::all(); // SELECT * FROM users;
echo Role::all(); // SELECT * FROM roles;
Code language: Python (python)
How it works.
First, define a constant TABLE_NAME
in the Model
class. In the all()
static method, returns a query that selects all rows from the table name specified by the TABLE_NAME
constant.
Second, define the User
and Role
classes that extend the Model
class. In the User and Role class, redefine the TABLE_NAME
constant.
Since the User
and Role
classes inherits the all()
method of the Model
class, they can call the all()
method.
When the User
class calls the all()
method, the all()
method returns the expected TALBE_NAME
constant defined in the User
class. The same logic is applied to the Role
class.
Summary
- Use the
const
keyword to define a class constant. - Use the visibility modifier keywords, including public, protected, and private. By default, a class constant is public.