Константы в PHP. Создание констант в PHP — const и define() Проверка существования констант

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

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

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

Предопределённые константы используются для получения информации о вашем коде. Имя такой константы пишется заглавными буквами между сдвоенными подчеркиваниями, например, __LINE__ и __FILE__ . Вот несколько полезных предопределённых констант, доступных в PHP:

  • __LINE__ возвращает номер строки в исходном файле, где используется константа:

  • __FILE__ представляет имя файла, включая полный путь:

  • __DIR__ представляет только путь к файлу:

  • __CLASS__ представляет имя текущего класса:

  • __FUNCTION__ представляет имя текущей функции:

  • __METHOD__ представляет имя текущего метода:

  • __NAMESPACE__ представляет имя текущего пространства имен:

Магические методы

Магические методы представляют крючки для специального функционала PHP. Их имена пишутся маленькими буквами с двумя предшествующими подчеркиваниями, например, __construct() и __destruct() .

Construct() - магический метод, который PHP вызывает для создания экземпляра вашего класса. Он принимает любое количество аргументов.

Destruct()- магический метод, который вызывается, когда объект уничтожается коллектором PHP. Данный метод не принимает аргументов и обычно используется для выполнения специальных операций, например, для закрытия соединения с базой данных.

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

PHP вызывает метод __get() в получающем контексте, если свойство не определено (или недоступно). Метод принимает один аргумент - имя свойства. Он должен вернуть значение, которое будет обрабатываться как значение свойства.

Метод __set() вызывается для неопределенного свойства в задающем контексте. Данный метод принимает два аргумента, имя свойства и значение.

myAarray[$prop] = $value; } public function __get($prop) { return $this->myArray[$prop]; } public function __isset($prop) { return isset($this->myArray[$prop]); } public function __unset($prop) { unset($this->myArray[$prop]); } public function __toString() { return __CLASS__ . ":" . $this->name; } } $obj = new MySample(); if (!isset($obj->name)) { $obj->name = "Alireza"; } echo $obj->name; // Alireza echo $obj; // MySample:Alireza

В выше приведенном коде свойство name не определено в классе. В коде предпринимается попытка назначить данному свойству значение “Alireza” и PHP вызывает магический метод __set() . Он получает “name” в качестве аргумента $prop и “Alireza” как $value , и сохраняет значение в частном массиве $myArray . Метод __get() работает в схожей манере. При выводе $obj->name вызывается метод __get() и ему передается значение “name” как аргумент $prop .

Есть и другие магические методы, которые помогают манипулировать недоступными свойствами, как в приведенном примере: __isset() , __unset() и __toString() . Оба метода __isset() и __unset() запускаются функциями с такими же именами, но без подчеркиваний в PHP.

Isset() проверяет, установлено свойство или нет. Данный метод принимает один аргумент - свойство, которое надо проверить. Метод __unset() принимает один аргумент, имя свойства, которое нужно сбросить.

Во многих случаях удобно представление объекта как строки, например, для вывода пользователю или другому процессу. Обычно PHP представляет объект как идентификатор в памяти, что плохо для таких функций. Метод __toString() помогает представить объект как строку. Метод запускается во многих ситуациях, где объект используется как строка, например, echo "Hello $obj" . Также его можно вызвать непосредственно, как любой другой публичный метод.

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

называется именованная величина, которая не изменяется в процессе выполнения программы (скрипта).

В РНР константы определяются функцией define() . Эта функция имеет следующий формат:

define ($name , $value , $case_sen ), где:

$name - имя константы;
$value - значение константы;
$case_sen - необязательный параметр логического типа,
указывающий, следует ли учитывать регистр букв (true) или нет (false).

Пример определения и использования констант в PHP:


echo pi ;
// Выводит 3.14
?>

Если параметр $case_sen равен true , то интерпретатор будет учитывать регистр символов при работе с константой. Обратите внимание, что константы используются без предваряющего знака $ .

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

    У констант нет приставки в виде знака доллара ($ );

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

    Константы могут быть определены и доступны в любом месте без учета области видимости;

    Константы не могут быть определены или аннулированы после первоначального объявления;

    Константы могут иметь только скалярные значения.

Проверка существования констант

Для проверки существования константы можно использовать функцию defined() . Данная функция возвращает true , если константа объявлена. Приведем пример:

// Объявляем константу pi
define ("pi" , 3.14 , true );
if (defined ("pi" )== true ) echo "Константа pi объявлена!" ;
// Скрипт выведет "Константа pi объявлена!"
?>

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

В PHP существуют следующие предопределенные константы:

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

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

Имя Описание
__LINE__ Текущая строка в файле.
__FILE__ Полный путь и имя текущего файла.
__DIR__ The directory of the file. If used inside an include, the directory of the included file is returned. This is equivalent to dirname(__FILE__). This directory name does not have a trailing slash unless it is the root directory.
__FUNCTION__ Имя функции. (Добавлена в PHP 4.3.0.)
__CLASS__ Имя класса. (Добавлена в PHP 4.3.0.)
__TRAIT__ The trait name. The trait name includes the namespace it was declared in (e.g. Foo\Bar).
__METHOD__ Имя метода класса. (Добавлена в PHP 5.0.0)
__NAMESPACE__ The name of the current namespace.

Дополнительно

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

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

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

Предопределённые константы используются для получения информации о вашем коде. Имя такой константы пишется заглавными буквами между сдвоенными подчеркиваниями, например, __LINE__ и __FILE__ . Вот несколько полезных предопределённых констант, доступных в PHP:

  • __LINE__ возвращает номер строки в исходном файле, где используется константа:

  • __FILE__ представляет имя файла, включая полный путь:

  • __DIR__ представляет только путь к файлу:

  • __CLASS__ представляет имя текущего класса:

  • __FUNCTION__ представляет имя текущей функции:

  • __METHOD__ представляет имя текущего метода:

  • __NAMESPACE__ представляет имя текущего пространства имен:

Магические методы

Магические методы представляют крючки для специального функционала PHP. Их имена пишутся маленькими буквами с двумя предшествующими подчеркиваниями, например, __construct() и __destruct() .

Construct() - магический метод, который PHP вызывает для создания экземпляра вашего класса. Он принимает любое количество аргументов.

Destruct()- магический метод, который вызывается, когда объект уничтожается коллектором PHP. Данный метод не принимает аргументов и обычно используется для выполнения специальных операций, например, для закрытия соединения с базой данных.

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

PHP вызывает метод __get() в получающем контексте, если свойство не определено (или недоступно). Метод принимает один аргумент - имя свойства. Он должен вернуть значение, которое будет обрабатываться как значение свойства.

Метод __set() вызывается для неопределенного свойства в задающем контексте. Данный метод принимает два аргумента, имя свойства и значение.

myAarray[$prop] = $value; } public function __get($prop) { return $this->myArray[$prop]; } public function __isset($prop) { return isset($this->myArray[$prop]); } public function __unset($prop) { unset($this->myArray[$prop]); } public function __toString() { return __CLASS__ . ":" . $this->name; } } $obj = new MySample(); if (!isset($obj->name)) { $obj->name = "Alireza"; } echo $obj->name; // Alireza echo $obj; // MySample:Alireza

В выше приведенном коде свойство name не определено в классе. В коде предпринимается попытка назначить данному свойству значение “Alireza” и PHP вызывает магический метод __set() . Он получает “name” в качестве аргумента $prop и “Alireza” как $value , и сохраняет значение в частном массиве $myArray . Метод __get() работает в схожей манере. При выводе $obj->name вызывается метод __get() и ему передается значение “name” как аргумент $prop .

Есть и другие магические методы, которые помогают манипулировать недоступными свойствами, как в приведенном примере: __isset() , __unset() и __toString() . Оба метода __isset() и __unset() запускаются функциями с такими же именами, но без подчеркиваний в PHP.

Isset() проверяет, установлено свойство или нет. Данный метод принимает один аргумент - свойство, которое надо проверить. Метод __unset() принимает один аргумент, имя свойства, которое нужно сбросить.

Во многих случаях удобно представление объекта как строки, например, для вывода пользователю или другому процессу. Обычно PHP представляет объект как идентификатор в памяти, что плохо для таких функций. Метод __toString() помогает представить объект как строку. Метод запускается во многих ситуациях, где объект используется как строка, например, echo "Hello $obj" . Также его можно вызвать непосредственно, как любой другой публичный метод.

Последнее обновление: 1.11.2015

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

Для определения константы используется оператор define , который имеет следующую форму: define(string $name, string $value, bool $case_sen=false) . Параметр $name передает название константы, а параметр $value - ее значение. Третий необязательный параметр принимает логическое значение true или false . Если значение равно false, то при использовании константы будет учитываться ее регистр, если true - регистр не учитывается. В нашем случае третий параметр не использован, поэтому он по умолчанию равен false.

После определения константы мы можем ее использовать также, как и обычную переменную. Единственное исключение - мы не сможем изменить ее значение. Другое отличие от переменной - не надо использовать знак $ . То есть выражение NUMBER=33; работать не будет.

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

Кроме создаваемых программистом констант в PHP имеется еще несколько встроенных констант:

    FILE__ : хранит полный путь и имя текущего файла

    LINE__ : хранит текущий номер строки, которую обрабатывает интерпретатор

    DIR__ : хранит каталог текущего файла

    FUNCTION__ : название обрабатываемой функции

    CLASS__ : название текущего класса

    METHOD__ : название обрабатываемого метода

    NAMESPACE__ : название текущего пространства имен

Например, выведем текущую выполняемую строку и название файла:

Проверка существования константы

Чтобы проверить, определена ли константы, мы можем использовать функцию bool defined(string $name) . Если константа $name определена, то функция будет возвращать значение true

константы .

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

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