Константы в PHP. Константы Задать выражение в константе php

Windows 8

Константа - это идентификатор (имя) для простого значения. Как следует из названия, их значение не может изменится в ходе выполнения скрипта (кроме магических констант , которые на самом деле не являются константами). Имена констант по умолчанию чувствительны к регистру. По принятому соглашению, имена констант всегда пишутся в верхнем регистре.

Имя константы должно соответствовать тем же правилам именования, что и другие имена в 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(имя константы) . Давайте разберем на примере, чтобы стало понятно:

Наберите данный пример и посмотрите, что будет.

Привет. Сегодня решил написать о константах в PHP. Расскажу как константы работают, какие чаще всего применяются и бывают.

Что такое константы в контексте PHP?

Константы — это по сути переменные у которых нельзя переопределить значение. Т.е после указания их значения вы больше не сможете его менять по ходу выполнения скрипта. Они как правило пишутся в верхнем регистре и в названии конкретно отражают хранимую в них информацию.

В PHP существует 2 разновидности констант:

  1. Обычные (задаются программистом)
  2. Предопределенные (задаются интерпретатором)

Обычные константы

Такой тип констант обычно используются как правило для служебных целей и создаются программистом в процессе написание кода.
Синтаксис создания обычной константы:

Define("PI",3.1415);

Создание константы происходит с помощью встроенной конструкции define ("Имя константы","Значение константы").

Для краткого пояснения механизма работы с константами покажу пример того что значения в константах задается один раз, и более не может быть изменено:

Для того чтобы проверить существование константы в языке предусмотрена функция defined («CONST_NAME»).

Предопределенные константы

Предопределенные константы отличаются от обычных способом создания. Они устанавливаются самим интерпретатором и меняют свое значение в контексте выполнения программы. Так же они не чувствительны к регистру, __CLASS__ или __class__ будут прекрасно выполнены интерпретатором.

Вот самые часто используемые предопределенные константы:

  • __FILE__ — хранит имя выполняемого на данный момент скрипта.
  • __FUNCTUIN__ — имя текущей функции.
  • __CLASS__ — имя текущего класса.
  • PHP_VERSION — содержит версию интерпретатора PHP.
  • TRUE , FALSE , NULL — содержат в себе значения соответствующие своему названию.

Для примера работы таких констант посмотрим на использование одной из них — __FUNCTION__ :

Как можно видеть из примера константа __function__ вернула имя функции в которой она была первоначально вызвана — abc () .

И да, константу невозможно удалить как обычную переменную функцией unset () , она существует от начала и до конца выполнения программы.

На этом все, желаю успешной практики и хорошего настроения. До скорого.

сайт Права на контент защищены. константы .

Константам можно присваивать следующие типы данных.

Целые – целые числа или числа без десятичной точки (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);

Вывод констант

Следующий фрагмент кода демонстрирует объявление константы, присваивание константе значения и вывод результатов в окне браузера.

A Web Page

Пример 3.2.

My PHP program 500 2.25

В этом примере объявляются значения трех констант: STRING_CONST , INTEGER_CONST и FLOAT_CONST . Затем используется оператор echo для вывода содержимого констант в окне браузера. Кроме вывода в окне браузера, константы можно использовать при выполнении математических и строковых операций PHP.

Операторы PHP

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

Арифметические операторы

Операторы присваивания

Операторы сравнения

Логические операторы

Арифметические операторы используются для выполнения основных математических операций. В следующей таблице представлены арифметические операторы , которые применяются в PHP .

A Web Page

Пример 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.

Константы - это идентификаторы (имена) простых значений. Исходя из их названия, нетрудно понять, что их значение не может изменяться в ходе выполнения скрипта (исключения представляют "волшебные" константы , которые на самом деле не являются константами в полном смысле этого слова). Имена констант чувствительны к регистру. По принятому соглашению, имена констант всегда пишутся в верхнем регистре.

Имя константы должно соответствовать тем же правилам, что и другие имена в PHP. Правильное имя начинается с буквы или символа подчеркивания и состоит из букв, цифр и подчеркиваний. Регулярное выражение для проверки правильности имени константы выглядит так: *

Замечание : Понятие "буквы" здесь - это символы a-z, A-Z, и другие символы с ASCII-кодами от 127 до 255 (0x7f-0xff).

Синтаксис

Вы можете определить константу с помощью функции define() или с помощью ключевого слова const вне объявления класса начиная с версии PHP 5.3.0. После того, как константа определена, ее значение не может быть изменено или аннулировано.

Константы могут содержать только скалярные данные (boolean , integer , float и string типов). Возможно также определять константы типа , но этого следует избегать, так как это может привести к неожиданным результатам.

Получить значение константы можно, указав ее имя. В отличие от переменных, вам не нужно предварять имя константы символом $ . Также вы можете использовать функцию constant() для получения значения константы, если вы формируете имя константы динамически. Используйте функцию get_defined_constants() для получения списка всех объявленных констант.

Замечание : Константы и (глобальные) переменные находятся в разных пространствах имен. Это означает, что, например, TRUE и $TRUE являются совершенно разными вещами.

Если вы используете неопределенную константу, PHP предполагает, что вы имеете ввиду само имя константы, как если бы вы указали литерал типа string (CONSTANT вместо "CONSTANT"). При этом будет сгенерирована ошибка уровня E_NOTICE . Смотрите также главу руководства, которая разъясняет, почему $foo - это неправильно (конечно, если вы перед этим не объявили bar как константу с помощью define()). Если вы просто хотите проверить, определена ли константа, используйте функцию defined() .

Различия между константами и переменными:

  • У констант нет приставки в виде знака доллара ($ );
  • Константы можно определить только с помощью функции define() , а не присваиванием значения;
  • Константы могут быть определены и доступны в любом месте без учета области видимости;
  • Константы не могут быть переопределены или аннулированы после первоначального объявления; и
  • Константы могут иметь только скалярные значения.

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

PHP предоставляет большой список предопределенных констант для каждого выполняемого скрипта. Многие из этих констант определяются различными модулями и будут присутствовать только в том случае, если эти модули доступны в результате динамической загрузки или в результате статической сборки.

Есть семь волшебных констант, которые меняют свое значение в зависимости от контекста, в котором они используются. Например, значение __LINE__ зависит от строки в скрипте, на которой эта константа указана. Специальные константы нечувствительны к регистру и их список приведен ниже:

Некоторые "волшебные" константы PHP
Имя Описание
__LINE__ Текущий номер строки в файле.
__FILE__ Полный путь и имя текущего файла. Если используется внутри подключаемого файла, то возвращается имя данного файла. Начиная с версии PHP 4.0.2, __FILE__ всегда содержит абсолютный путь с разрешенными символическими ссылками, тогда как в старых версиях в некоторых обстоятельствах возвращался относительный путь.
__DIR__ Директория файла. Если используется внутри подключаемого файла, то возвращается директория этого файла. Это эквивалентно вызову dirname(__FILE__) . Возвращаемое имя директории не оканчивается на слэш, за исключением корневой директории (добавлена в PHP 5.3.0.)
__FUNCTION__ Имя функции. (Добавлена в PHP 4.3.0.) Начиная с PHP 5 эта константа возвращает имя функции точно так, как оно было объявлено (с учетом регистра). В PHP 4 это значение всегда было в нижнем регистре.
__CLASS__ Имя класса. (Добавлена в PHP 4.3.0) Начиная с PHP 5 эта константа возвращает имя класса точно так, как оно было объявлено (с учетом регистра). В PHP 4 это значение всегда было в нижнем регистре. Имя класса содержит название пространства имен, в котором класс был объявлен (например, Foo\Bar ). Обратите внимание, что начиная с PHP5.4 __CLASS__ также работает в трейтах. При использовании в методах трейтов __CLASS__ является именем класса, в котором эти методы используется.
__TRAIT__ Имя трейта. (Добавлена в PHP 5.4.0) Начиная с PHP 5.4 эта константа возвращает имя трейта точно так, как оно было объявлено (с учетом регистра). Это имя содержит название пространства имен, в котором трейт был объявлен (например, Foo\Bar ).
__METHOD__ Имя метода класса. (Добавлена в PHP 5.0.0) Имя метода возвращается так, как оно было объявлено (с учетом регистра).
__NAMESPACE__ Имя текущего пространства имен (с учетом регистра). Эта константа определяется во время компиляции (Добавлена в версии PHP 5.3.0).
Пример #1 Правильные и неправильные имена констант
// Правильные имена констант define("FOO", "something"); define("FOO2", "something else"); define("FOO_BAR", "something more"); // Неправильные имена констант define("2FOO", "something"); // Это корректное объявление, но лучше его не использовать: // PHP однажды может зарегистрировать "волшебную" константу, // которая сломает ваш скрипт define("__FOO__", "something");