Before PHP 8.3, the only way to fetch class constants was through the constant
function. This function is employed to obtain the value of a constant when its name is unknown, such as when it is stored in a variable or returned by a function.
Let's say we have the following class:
<?php
class PaginatorConst
{
public const int PER_PAGE = 20;
}
We can use the constant
function to obtain the value of a constant in the following manner:
<?php
require_once 'PaginatorConst.php';
$name = 'PER_PAGE';
echo constant(PaginatorConst::class.'::'.$name); // 20
Since PHP 8.3, it is possible to dynamically get the value of a class constant using syntax ClassName::{$varName}
.
<?php
require_once 'PaginatorConst.php';
$name = 'PER_PAGE';
echo PaginatorConst::{$name}; // 20
The new syntax works for getting enum cases as well.
<?php
enum UserStatus: string
{
case ACTIVE = 'A';
}
<?php
require_once 'UserStatus.php';
$name = 'ACTIVE';
echo UserStatus::{$name}->value; // A
Leave a Comment
Cancel reply