Константы в PHP

Александр Кичатов

Что такое константа

Константы по принципу работы похожи на переменные, но имеют одно важное отличие - записать какое-либо значение в константу можно только 1 раз, перезаписать это значение уже не получится.

Создать константу можно с помощью функции define() или оператора const:

<?php
	const LOGIN = 'admin';
	define('PASSWORD', 'qwerty');

	echo LOGIN, ' ', PASSWORD;

Как вы заметили, у константы нет значка $ в начале. Чтобы не было путаницы, существует общепринятое соглашение всегда писать константы большими буквами, а слова разделять нижним подчёркиванием, например MY_SUPER_CONSTANT.

Константы используются не так часто, в основном для хранения различных настроек, логинов-паролей и т.п.

Получение значения константы по её названию

С помощью функции constant() мы можем получить значение константы, имя которой лежит в переменной:

define('LOGIN', 'admin');

$const_name = 'LOGIN';

echo constant($const_name); // admin

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

В PHP существует множество встроенных констант, относящихся к различным модулям и библиотекам.

Например, существует набор констант, хранящий в себе различные уровни ошибок: E_ERROR, E_WARNING, E_NOTICE и т.д.

Магические константы

Также в PHP есть 9 магических констант, которые содержат в себе значения, меняющиеся в зависимости от контекста:

  • __LINE__ - текущая строка в скрипте
  • __FILE__ - полный путь и имя текущего скрипта
  • __DIR__ - полный путь к директории, в которой расположен скрипт

Назначение остальных констант вы поймёте позже, когда дойдёте до изучения функций и ООП.

  • __FUNCTION__ - имя текущей функции
  • __CLASS__ - полный путь и имя текущего скрипта
  • __TRAIT__ - имя текущего трейта с пространством имён
  • __METHOD__ - имя текущего метода
  • __NAMESPACE__ - имя текущего пространства имён
  • ClassName::class - имя класса, к которому мы обращаемся, с пространством имён

Задача

Напишите скрипт, который:
1. Создаёт константу PASSWORD со значением ioef84Fe#.
2. Выводит значение константы внутри тега div.

<?php
define('PASSWORD', 'ioef84Fe#');
echo '<div>', PASSWORD, '</div>';

Комментарии