Константы в PHP
В этом уроке вы узнаете о константах в PHP и о том, как использовать функцию define()
и ключевое слово const
для определения констант.
Введение в константы PHP
Константа — это просто имя, содержащее одно значение. Как следует из названия, значение константы не может быть изменено во время выполнения PHP-скрипта.
Чтобы определить константу, используется функция define()
. Функция define()
принимает имя константы в качестве первого аргумента и значение константы в качестве второго аргумента. Например:
<?php
define('WIDTH','1140px');
echo WIDTH;
По соглашению имена констант пишутся в верхнем регистре. В отличие от переменной, имя константы не начинается со знака доллара ($
).
По умолчанию имена констант чувствительны к регистру. Это означает, что WIDTH
и width
— разные константы.
Можно определить константы, нечувствительные к регистру. Однако они устарели с PHP 7.3.
В PHP 5 константа может содержать простое значение, например число, строку или логическое значение. Начиная с PHP 7.0, константа может содержать массив. Например:
<?php
define( 'ORIGIN', [0, 0] );
Как и в случае с суперглобальными переменными, вы можете получить доступ к константам из любого места скрипта.
Ключевое слово const
PHP предоставляет вам другой способ определения константы с помощью ключевого слова const
. Вот синтаксис:
const CONSTANT_NAME = value;
В этом синтаксисе вы определяете имя константы после ключевого слова const
. Чтобы присвоить значение константе, вы используете оператор присваивания (=
) и значение константы. Постоянное значение может быть скалярным, например числом, строкой или массивом.
В следующем примере ключевое слово const
используется для определения константы SALES_TAX
:
<?php
const SALES_TAX = 0.085;
$gross_price = 100;
$net_price = $gross_price * (1 + SALES_TAX);
echo $net_price; // 108.5
В следующем примере ключевое слово const
используется для определения константы RGB
, содержащей массив:
<?php
const RGB = ['red', 'green', 'blue'];
define vs const
Во-первых, define()
— это функция, а const
— языковая конструкция.
Это означает, что функция define()
определяет константу во время выполнения, тогда как ключевое слово const определяет константу во время компиляции.
Другими словами, вы можете использовать функцию define()
для условного определения константы следующим образом:
<?php
if(condition)
{
define('WIDTH', '1140px');
}
Однако вы не можете использовать ключевое слово const
для определения константы таким образом. Например, синтаксис следующего кода недействителен:
<?php
if(condition)
{
const WIDTH = '1140px';
}
Во-вторых, функция define()
позволяет вам определить константу с именем, полученным из выражения. Например, ниже определяются три константы OPTION_1
, OPTION_2
и OPTION_3
со значениями 1, 2 и 3.
<?php
define('PREFIX', 'OPTION');
define(PREFIX . '_1', 1);
define(PREFIX . '_2', 2);
define(PREFIX . '_3', 3);
Однако вы не можете использовать ключевое слово const
для определения имени константы, полученного из выражения.
Если вы не хотите определять константу при условии или использовать выражение, вы можете использовать ключевое слово const
для определения констант, чтобы сделать код более понятным.
Обратите внимание: вы можете использовать ключевое слово
const
для определения констант внутри классов.
Подытожим
- Константа — это имя, содержащее простое значение, которое нельзя изменить во время выполнения скрипта. Начиная с PHP 7, константа может содержать массив.
- Доступ к константе можно получить из любого места скрипта.
- Используйте функцию
define()
или ключевое словоconst
, чтобы определить константу. - Используйте функцию
define()
, если вы хотите определить константу при условии или с помощью выражения.