Константы

В этой главе:

  • Определение констант

  • Область видимости и значения

  • Отличия констант от переменных

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

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

Определение констант

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
  // Правильные имена констант
  define("FOO2", "some text");
  define("FOO_BAR", "another text");
 
  // Неправильное имя константы
  # define("2BAR", "something");
   
  const MY_CONSTANT = 'Обычный текст.';
 
  echo MY_CONSTANT . "<br>" . FOO2 . "<br>" . FOO_BAR;
 
?>

Примечание: константы, определенные с помощью ключевого слова const должны быть определены в самой верхней области видимости, так как они определяются при компилировании скрипта. Это значит, что их нельзя определять внутри циклов, функций, или оператора if.

Область видимости и значения

Константы имеют глобальную область видимости и могут принимать любое значение скалярного (простого) типа данных. Чтобы получить значение константы, достаточно просто обратиться к ее имени. Если имя константы формируется динамически, например хранится в качестве значения переменной или возвращается функцией, то чтобы получить значение константы, необходимо воспользоваться функцией constant(). Эта функция получает имя константы в качестве аргумента и возвращает ее значение.

1
2
3
4
5
6
7
8
9
<?php
 
  define("HELLO", "Hello World!");
  echo HELLO;   // Hello World!
 
  $constant_name = "HELLO";
  echo constant($constant_name);
 
?>

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

1
2
3
4
5
6
7
8
<?php
 
  define("PI", "3.1416");
   
  echo "Число: PI";    // Число: PI
  echo "Число: ".PI;   // Число: 3.1416
 
?>

Отличия констант от переменных

В списке указана разница между константами и переменными:

  • По соглашению между разработчиками имена констант принято записывать в верхнем регистре.

  • В отличие от переменных, имена констант не начинаются со знака доллара ($).

  • Константа определяется с помощью ключевого слова const или функции define().

  • После определения константы, она доступна из любой области видимости, поэтому ее можно использовать в любом месте вашего сценария, не обращая никакого внимания на текущую область видимости.

  • После определения константу нельзя переопределить с другим значением.

  • Константы могут иметь только скалярные значения (boolean - булево значение, integer - целые числа, float - вещественные числа и string - строки).

  • В отличие от переменной, константа не может быть удалена.

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

В PHP есть функция defined(string имя_константы), которая проверяет существует ли (была ли определена ранее) константа с указанным именем. Она возвращает true, если константа с указанным именем уже была определена.

1

2

3

4

5

6

7

8

9

<?php
 
define("TEST", "some text");
 
if (defined('TEST')) {
    echo TEST;
}
 
?>