Syntax

Оновлено: 11.05.2023

Константи можуть бути визначені за допомогою ключового слова const або за допомогою функції define(). У той час як define() дозволяє визначити константу у вигляді довільного виразу, ключове слово const має обмеження, як описано у наступному параграфі. Після того, як константу визначено, її ніколи не можна змінити або зробити невизначеною.

При використанні ключового слова const приймаються тільки скалярні (bool, int, float і string) вирази і константні масиви, що містять тільки скалярні вирази. Можна визначити константи як ресурс, але цього слід уникати, оскільки це може призвести до неочікуваних результатів.

Доступ до значення константи здійснюється шляхом вказівки її імені. На відміну від змінних, перед константою не ставиться символ $. Також можна використовувати функцію constant() для зчитування значення константи, якщо ім'я константи отримано динамічно. Використовуйте get_defined_constants(), щоб отримати список усіх визначених констант.

Примітка: Константи і (глобальні) змінні знаходяться в різних просторах імен. Це означає, що, наприклад, true і $TRUE зазвичай відрізняються.

Якщо використовується невизначена константа, буде згенеровано помилку. До версії PHP 8.0.0 невизначені константи інтерпретувалися як звичайний рядок слів, тобто (CONSTANT проти "CONSTANT"). Починаючи з версії PHP 7.2.0 ця помилка є застарілою, і у разі її виникнення видається повідомлення про помилку рівня E_WARNING. До версії PHP 7.2.0 замість цього видавалася помилка рівня E_NOTICE. Див. також статтю про те, чому $foo[bar] є помилковим (якщо тільки bar не є константою). Це не стосується (повністю) кваліфікованих констант, які завжди видаватимуть помилку, якщо їх не визначено.

Зауваження: Щоб перевірити, чи задано константу, використовуйте функцію defined().

У цьому полягає різниця між константами та змінними:

  • Перед константами не ставиться знак долара ($);
  • Константи можуть бути визначені та доступні будь-де, незважаючи на правила визначення області видимості змінних;
  • Константи не можуть бути перевизначені або невизначені після того, як вони були встановлені; і
  • Константи можуть обчислюватися лише до скалярних значень або масивів.

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

<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // Emits an Error: Undefined constant "Constant"
               // Prior to PHP 8.0.0, outputs "Constant" and issues a warning.
?>

Приклад #2 Визначення констант за допомогою ключового слова const

<?php
// Simple scalar value
const CONSTANT = 'Hello World';

echo CONSTANT;

// Scalar expression
const ANOTHER_CONST = CONSTANT.'; Goodbye World';
echo ANOTHER_CONST;

const ANIMALS = array('dog', 'cat', 'bird');
echo ANIMALS[1]; // outputs "cat"

// Constant arrays
define('ANIMALS', array(
    'dog',
    'cat',
    'bird'
));
echo ANIMALS[1]; // outputs "cat"
?>

Зауважте:

На відміну від визначення констант за допомогою define(), константи, визначені за допомогою ключового слова const, повинні бути оголошені в області видимості верхнього рівня, оскільки вони визначаються під час компіляції. Це означає, що їх не можна оголошувати всередині функцій, циклів, операторів if або блоків try/catch.