Константы в PHP
Сегодня разберем еще одну тему, которая называется Константы в PHP. Что же такое константы, где они используются и надо ли их вообще использовать?
Конечно же использовать их надо. Никто вам не запрещает вообще их не использовать, а просто хранить информацию в переменных. Так вот константы в PHP нужны, как и переменные для хранения какой либо информации. Тогда чем же они отличаются от переменных? А отличаются они тем, что единожды записав информацию в константу, ее уже потом, в программе, нельзя изменить. Для чего это нужно я расскажу далее. А пока давайте посмотрим как записываются константы:
<?php define('LOGIN', 12345); ?>
Итак, константы записываются с помощью ключевого слова define без знака доллара в начале, где в круглых скобках указывается в виде строки название константы, а потом ее значение. Очень важно отметить, что имена констант принято записывать большими буквами. Опять же никто вас к этому не принуждает, просто это так принято.
Давайте теперь вернемся к тому, что переопределять константы в программе нельзя и удалить нельзя. Вот такой вот код, естественно, выдаст ошибку:
<?php // Сначала создаем константу define('LOGIN', 12345); // Далее в коде пытаемся ее переопределить LOGIN = 123; // В итоге мы получаем ошибку // Далее хотим удалить константу unset(LOGIN); // И тоже получаем ошибку ?>
Константы заводятся по двум причинам: Первое — удобно помнить имя константы. Например, у PHP есть тоже свои константы. Возьмем две из них, это E_ALL и E_ERROR (константы ошибок). За этими константами скрываются какие-то длинные большие числа. Конечно удобнее помнить название константы, чем длинное число. И еще, дело в том, что числа от версии к версии меняются и каждый раз запоминать эти новые числа — это конечно жуть. Поэтому их удобнее запихнуть в константу, которая всегда будет постоянной независимо от версий PHP и вообще здесь даже думать не нужно, что там что-то изменилось, мы просто используем эту константу и нам не важно что за ней скрывается.
Второе — записать в константу наиболее критичные участки кода, чтобы кто-то их не переписал. Ну например я решил поработать с файлом, хочу записать в него что-то или прочитать. Соответственно мне нужно создать имя файла. Но поскольку я этот файл буду использовать в нескольких местах, то лучше запихнуть имя файла в переменную. Ситуация в следующем — я придумал название файла «user.txt» и уехал в отпуск. Мой коллега залезает в код, куда-нибудь в середину и ему тоже нужен файл и берет и придумывает название файла «user.txt» и переписывает мой код. Я прихожу, начинаю обращаться к своему файлу и обращаюсь не туда куда надо. А если я поставил бы название файла в константу, то ни каких проблем бы не было, никто не смог бы переписать его.
С константой ничего нельзя сделать. Даже если я попытаюсь написать вот так, то это тоже не сработает:
<?php define('LOGIN', 12345);// Константа определена define('LOGIN', 123); // Переопределить не получится. Это не сработает ?>
Константу можно только использовать:
<?php echo LOGIN; // Выведет 12345 ?>
Еще обратите внимание, что у PHP есть свои встроенные константы, такие как например E_ALL, E_ERROR и таких констант очень много. И если мы создадим константу совпадающую с константой PHP, то у нас ничего не получится.
Для проверки существования констант и вообще, если мы создаем новую константу правильнее сначала проверить не существует ли она. Для этого предназначена функция под названием defined(«имя константы»). Эта функция возвратит TRUE, если такая константа уже есть и FALSE, если такой константы нет.
Проверку существования констант можно записать так:
<?php define('LOGIN', 12345); /* Далее проверяем существование константы от противного с помощью восклицательного знака */ if(!defined('LOGIN')){ define('LOGIN', 12345); } /* Соответственно у нас константа существует в первой строчке, поэтому в конструкцию if() мы не попадаем */ ?>
Константы по умолчанию регистрозависимы:
<?php define('LOGIN', 12345); echo login; // Значение 12345 я не получу ?>
Я рекомендую вам оставить эту регистрозависимость, так как в дальнейшем будет меньше ошибок. Однако, если вы очень сильно хотите, чтобы ваши константы были регистронезависимы, то вам необходимо третьим параметром поставить значение TRUE:
<? php define('LOGIN', 12345, true); echo LoGiN// Выведет 12345 ?>
Также при создании констант мы не можем использовать в значении константы имя переменной:
<?php define('LOGIN', $a); // Так делать нельзя! ?>
Криптовалюта и майнинг — хотите в этом разобраться. Смотрите видео по теме по ссылке https://www.youtube.com/watch?v=SOVXa2BNoIU .