Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Константы

Константа — это имя для значения, которое не меняется во время работы программы: ставка налога, название сайта, число дней в неделе. В отличие от переменной, константу нельзя переопределить по ошибке.

Объявление

Константу объявляют словом const. Знак $ перед именем не ставят:

<?php
 
const SITE_NAME = 'Мой блог';
 
echo SITE_NAME; // Мой блог

Имена констант принято писать заглавными буквами, разделяя слова подчёркиванием.

Константу нельзя изменить

Попытка присвоить константе новое значение — ошибка ещё до запуска программы. Значение вычисляют один раз, при объявлении:

<?php
 
const PRICE = 200;
const TAX = PRICE * 0.2;
 
echo PRICE + TAX; // 240

В значении константы можно использовать числа, строки, массивы и другие константы.

Зачем нужны константы

Число без названия посреди кода называют «магическим»: непонятно, что оно означает. Константа даёт ему имя и хранит его в одном месте:

<?php
 
const MAX_LOGIN_ATTEMPTS = 3;
 
$attempts = 4;
 
if ($attempts > MAX_LOGIN_ATTEMPTS) {
    echo 'Слишком много попыток';
}

Если правило изменится, поправить придётся одну строку.

Функция define

Константу можно создать и функцией define(). Она работает во время выполнения, поэтому подходит там, где имя или значение заранее неизвестны:

<?php
 
define('APP_MODE', 'dev');
 
echo APP_MODE;                              // dev
echo defined('APP_MODE') ? ' есть' : ' нет'; // есть

Функция defined() проверяет, существует ли константа. В обычном коде предпочитайте const.

Встроенные константы

В PHP много готовых констант:

<?php
 
echo PHP_INT_MAX, "\n"; // 9223372036854775807
echo M_PI, "\n";        // 3.1415926535898
echo PHP_EOL === "\n" || PHP_EOL === "\r\n" ? 'перевод строки' : '';

PHP_EOL — перевод строки для текущей системы, PHP_VERSION — версия PHP.

Волшебные константы

Их значения зависят от места в коде. Они начинаются и заканчиваются двумя подчёркиваниями:

<?php
 
function whoAmI()
{
    return __FUNCTION__;
}
 
echo whoAmI(), "\n"; // whoAmI
echo __LINE__;       // 9

__DIR__ содержит папку текущего файла — с её помощью строят пути к соседним файлам.

Частая ошибка

Константы не подставляются в строку в двойных кавычках — там PHP ищет только переменные:

<?php
 
const CITY = 'Казань';
 
echo "Город: CITY", "\n";  // Город: CITY
echo 'Город: ' . CITY;     // Город: Казань

Склеивайте константу со строкой оператором ..

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.