Волшебные константы. Стандартные константы PHP Задать выражение в константе php
В этой заметке речь пойдет о константах. Как обычно разберемся с самим понятием константы в языках программирования и посмотрим, как объявляются и используются константы в PHP .
Понятие константа и константы в PHP
Слово константа должно быть вам уже знакомо из математики:
“Математическая константа - величина, значение которой не меняется.”
Тоже самое и в PHP. Константа в PHP – это идентификатор, который служит для обозначения простого значения (строка, число какое-нибудь), которое не может изменяться в процессе выполнения кода.
Для объявления константы (присвоения ей значения) используется функция define . Пример объявления константы:
Имена констант в PHP чувствительны к регистру (большие и маленькие буквы различаются), так что нужно быть внимательней. Также существует соглашение, что имена констант всегда пишутся в верхнем регистре.
Имя константы должно начинаться с буквы или символа подчеркивания “_” и может состоять из букв, цифр и подчеркивания.
Рассмотрим простой пример использования константы:
В этом примере мы объявили константу и использовали ее в программе.
Для чего используются константы и не проще ли использовать переменные?
Как уже было сказано, константы не могут изменить своего значения в процессе выполнения программы. В константах обычно сохраняют постоянные параметры сайта, такие как реквизиты доступа к базе данных (хост, логин и пароль пользователя, имя базы данных), расположение сайта на диске и многие другие настройки.
Если мы будем использовать переменные, то скрип может случайно (в случаем ошибки) изменить значение переменной и будет работать не так как вы задумали.
Использование констант гарантирует, что то значение которое вы указали при объявлении константы останется неизменным.
константы .Константам можно присваивать следующие типы данных.
Целые – целые числа или числа без десятичной точки (1, 999, 325812841).
Числа с плавающей точкой - числа, содержащие десятичную точку (1.11, 2.5, .44).
Строки – текстовая или числовая информация . Строковые данные всегда заключаются в кавычки ("Hello World", "478-477-5555").
Имена констант PHP в отличие от переменных не начинаются со знака "$". Имена констант обычно записывают в верхнем регистре. Имена констант могут содержать буквы, цифры и символ подчеркивания (_ ); они не могут, однако, начинаться с цифры. Объявление констант показано ниже.
define("STRING_CONSTANT", "This is my string."); define("NUMERIC_CONSTANT", 5);
Вывод констант
Следующий фрагмент кода демонстрирует объявление константы, присваивание константе значения и вывод результатов в окне браузера.
Пример 3.2.
My PHP program 500 2.25
В этом примере объявляются значения трех констант: STRING_CONST , INTEGER_CONST и FLOAT_CONST . Затем используется оператор echo для вывода содержимого констант в окне браузера. Кроме вывода в окне браузера, константы можно использовать при выполнении математических и строковых операций PHP.
Операторы PHP
Операторы применяются для выполнения операций или действий с переменными. Они могут включать присваивание значения переменной, выполнение сложения переменных, сравнение значений переменных и определение состояния условия.
Арифметические операторы
Операторы присваивания
Операторы сравнения
Логические операторы
Арифметические операторы используются для выполнения основных математических операций. В следующей таблице представлены арифметические операторы , которые применяются в PHP .
Пример 3.3.
The sum is 11 The difference is 9 The product is 27 The quotient is 343
Порядок выполнения операций
Когда вычисляется арифметическое выражение, существует заданный порядок, в котором выполняются операции. Этот порядок называется приоритетом операций. Умножение и деление имеют преимущество (и выполняются первыми) перед сложением и вычитанием, при движении в выражении слева направо. Этот порядок имеет важное влияние на то, будут ли получены ожидаемые результаты. Рассмотрим следующие объявления и присваивания.
Получающееся значение будет равно 18. Сначала $num1 умножается на $num2 , чтобы получить 20; затем $num3 вычитается из 20, чтобы получить 18. Предположим, однако, что в действительности надо сначала вычесть $num3 из $num2 , а затем умножить на $num1 , чтобы получить 12. Показанное выше выражение не создаст этот результат, потому что умножение имеет приоритет перед вычитанием и выполнится первым.
Поэтому часто необходимо переопределить порядок выполнения операций и явно управлять порядком вычисления выражения. Для этого используют скобки (), которые могут помочь изменить порядок выполнения арифметических операций. Приведенный выше пример можно переписать следующим образом.
В этот раз $answer равно 12. $num3 вычитается из $num2 , чтобы получить 3. Затем 3 умножается на $num1 .
Операторы присваивания используются для изменения значения текущей переменной на значение справа от оператора. В следующей таблице представлены операторы присваивания языка PHP.
Оператор | Описание |
---|---|
= | Переменной слева присваивается вычисленное справа значение |
+= | Складывает значение слева со значением справа и присваивает результат переменной слева |
-= | Вычитает значение справа из значения слева и присваивает результат переменной слева |
*= | Умножает значение справа на значения слева и присваивает результат переменной слева |
/= | Делит значение слева на значение справа и присваивает результат переменной слева |
%= | Делит значение слева на значение справа и присваивает остаток (по модулю) переменной слева |
.= | Значение слева соединяется (конкатенация) со значением справа, и результат присваивается переменной слева |
Операторы сравнения используются для сравнения значений. В следующей таблице представлены операторы сравнения языка PHP.
Константы - это значения, которые не изменяются со временем. Ещё из школы Вы, наверняка, знаете многие константы, например, число п , число e , ускорение свободного падения и другие. И, разумеется, при программировании тоже очень часто возникает необходимость ввода констант . И о том, как создавать и использовать константы в PHP , мы и поговорим в этой статье.
Давайте с Вами создадим константу числа п :
define(PI, 3.1415926);
echo PI;
?>
Оператор define создаёт константу PI и присваивает ей значение 3.1415926 . Дальше мы выводим эту константу через оператор echo . Всё очень просто, однако, есть одна рекомендация, которую я советую Вам всегда соблюдать. Обязательно пишите константы заглавными буквами. Не то, чтобы это было обязательно, но крайне желательно. И так принято не только в PHP , но и в других языках тоже.
Разумеется, впоследствии изменить константу PI будет нельзя (на то она и константа ).
Теперь разберём одну функцию, которая проверяет: "Определена ли заданная константа ". Давайте напишем такой скрипт:
if (!defined("PI")) define(PI, 3.1415926);
echo PI;
?>
Здесь проверяется существование константы PI . И если она не существует (то есть функция define() вернула false ), то тогда инициализируем эту константу. Затем просто выводим её.
Как видите, создавать и использовать свои константы в PHP - это очень просто.
И, напоследок, хочется рассказать об уже встроенных константах PHP . Давайте с Вами напишем простой скрипт:
phpinfo();
?>
Ближе к концу есть раздел "PHP Variable ". Собственно, это не совсем константы , однако, они являются константами при выполнении данного скрипта. Разумеется, при выполнении другого скрипта они уже будут иметь другие значения (не все, разумеется). Давайте с Вами выведем пару констант , чтобы Вы поняли, как с ними работать, ведь они используются безумно часто:
echo $_SERVER["REMOTE_ADDR"];
echo "
";
echo $_SERVER["QUERY_STRING"];
?>
В данном скрипте мы выводим IP-адрес пользователя , запустившего скрипт, а на следующей строке выводим строку запроса (например, "index.php?id=7 "). Забегая немного вперёд, говорю, что здесь мы работаем с глобальным массивом $_SERVER . С массивами мы ещё познакомимся, но, думаю, что те, кто работал с массивами в других языках программирования, без проблем узнают синтаксис. Что же касается других констант , то с ними работа происходит аналогично.
Константа - это идентификатор (имя) для простого значения. Как следует из названия, их значение не может изменится в ходе выполнения скрипта (кроме магических констант , которые на самом деле не являются константами). Имена констант по умолчанию чувствительны к регистру. По принятому соглашению, имена констант всегда пишутся в верхнем регистре.
Имя константы должно соответствовать тем же правилам именования, что и другие имена в PHP. Правильное имя начинается с буквы или символа подчеркивания, за которым следует любое количество букв, цифр и символов подчеркивания. Регулярное выражение для проверки правильности имени константы выглядит так: ^*$
Возможно определить константы с помощью функции define() зарезервированными или даже некорректными именами, значения которых могут быть (только) получены через функцию constant() . Однако, делать это не рекомендуется.
Пример #1 Правильные и неправильные имена констант
// Правильные имена констант
define
("FOO"
,
"что-то"
);
define
("FOO2"
,
"что-то ещё"
);
define
("FOO_BAR"
,
"что-то большее"
);
// Неправильные имена констант
define
("2FOO"
,
"что-то"
);
// Это верное объявление, но лучше его не использовать:
// PHP однажды может зарегистрировать волшебную константу,
// которая нарушит работу скрипта
define
("__FOO__"
,
"что-то"
);
?>
Замечание : Понятие "буквы" здесь - это символы a-z, A-Z, и другие символы с ASCII-кодами от 128 до 255 (0x80-0xff).
2 years ago
Performance of constants. PHP 7.1.10 32 bits (Opcache active, windows 10 i7-64bits) but apparently the trends is the same with the 5.x
using a constant declared by DEFINE("CNS",value) : 0.63575601577759s
using a constant declared by const CNS=value: 0.61372208595276s
using a variable declared by $v=value: 0.51184010505676s
In average, the use of DEFINE and CONST is around the same with some sightly better performance of CONST instead of DEFINE. However, using a variable is around 10-50% better than to use a constant. So, for a performance intensive task, constant is not the best option.
$p1=microtime(true);
$x=0;
for($i=0;$i<50000000;$i++) {
$x+=CNS;
}
$p2=microtime(true);
14 years ago
An undefined constant evaluates as true when not used correctly. Say for example you had something like this:
settings.php
// Debug mode
define
("DEBUG"
,
false
);
?>
test.php
include("settings.php"
);
if (DEBUG
) {
// echo some sensitive data.
}
?>
If for some reason settings.php doesn"t get included and the DEBUG constant is not set, PHP will STILL print the sensitive data. The solution is to evaluate it. Like so:
settings.php
// Debug mode
define
("DEBUG"
,
0
);
?>
test.php
include("settings.php"
);
if (DEBUG
==
1
) {
// echo some sensitive data.
}
?>
Now it works correctly.
Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье мы разобрали оператор эквивалентности в PHP . В данной статье я бы хотел рассказать о константах в PHP . В школе вы не раз встречали константы, например "число PI" или из физики универсальная газовая постоянная (R). Константы один раз определяют и они уже не меняются . Тоже самое касается констант в программировании, т.е. мы один раз определяем константу и она больше не меняется в коде программы. Константами могут быть различные математические величины, пути до файлов.
Чем константа отличается от переменной:
1) Её определяют один раз и нигде больше нельзя присвоить значение,
2) Чтобы к ней обратиться, не нужно ставить знак "$" перед ней (здесь есть минус — теперь мы не можем использовать имя константы в текстовой строке).
Давайте выведем константу "PI":
Константы бывают двух типов: определяемые интерпретатором и определяемые пользователем :
Примеры констант, определяемых интерпретатором:
1) __FILE__
— хранит имя файла, в котором находится тот код, который сейчас выполняется,
2) PHP_VERSION
— версия интерпретатора PHP,
3) PHP_OS
— версия операционной системы, под которой работает PHP.
Наберите следующий код и посмотрите, какие константы ещё бывают:
Можно определять свои собственные константы, делается это с помощью оператора define . Давайте определим 2 константы:
"; echo Const2; ?>
В данном случае у нас выведутся значения данных констант.
По умолчанию регистр символов в имени константы учитывается, его можно отключить с помощью необязательного третьего параметра, например так:
"; echo neW1; ?>
Вы увидите, что всё работает (в предыдущем примере работать не будет, так как там учитывается регистр букв).
Обратите внимание на кавычки, в которых пишется имя константы. Это обязательно нужно делать. Также нельзя создавать константы с одинаковыми именами.
В PHP можно проверить существует константа или нет с помощью функции defined(имя константы) . Давайте разберем на примере, чтобы стало понятно:
Наберите данный пример и посмотрите, что будет.