Class Constants

Оновлено: 11.05.2023

Ви можете визначати константи для кожного класу, залишаючи їх незмінними. За замовчуванням константи класу є загальнодоступними.

Зауважте:

Константи класу можуть бути перевизначені дочірнім класом. Починаючи з версії PHP 8.1.0, константи класу не можуть бути перевизначені дочірнім класом, якщо він визначений як фінальний.

Інтерфейси також можуть мати константи. Приклади можна знайти у документації до інтерфейсу.

На клас можна посилатися за допомогою змінної. Значення змінної не може бути ключовим словом (наприклад, self, parent та static).

Зверніть увагу, що константи класу виділяються один раз на клас, а не для кожного екземпляру класу.

Приклад #1 Визначення та використання константи

<?php
class MyClass
{
    const CONSTANT = 'constant value';

    function showConstant() {
        echo  self::CONSTANT . "\n";
    }
}

echo MyClass::CONSTANT . "\n";

$classname = "MyClass";
echo $classname::CONSTANT . "\n";

$class = new MyClass();
$class->showConstant();

echo $class::CONSTANT."\n";
?>

Спеціальна константа ::class дозволяє повністю кваліфіковане розпізнавання імен класів під час компіляції, це корисно для класів з простором імен:

Приклад #2 Приклад класу Namespaced ::class

<?php
namespace foo {
    class bar {
    }

    echo bar::class; // foo\bar
}
?>

Приклад #3 Приклад вираження констант класу

<?php
const ONE = 1;
class foo {
    const TWO = ONE * 2;
    const THREE = ONE + self::TWO;
    const SENTENCE = 'The value of THREE is '.self::THREE;
}
?>

Приклад #4 Модифікатори видимості констант класу, починаючи з PHP 7.1.0

<?php
class Foo {
    public const BAR = 'bar';
    private const BAZ = 'baz';
}
echo Foo::BAR, PHP_EOL;
echo Foo::BAZ, PHP_EOL;
?>

Вивід вищенаведеного прикладу в PHP 7.1:

Зауважте:

Починаючи з PHP 7.1.0 для констант класу дозволено використовувати модифікатори видимості.