Как проверить константу php

Константы в PHP

Константа PHP противоположна переменной в том смысле, что после определения ее нельзя изменить.

Константы особенно полезны для определения значения, которое вы часто используете, и которое никогда не меняется. Например, вы можете определить константу INCHES_SM_METR, которая содержит количество сантиметров в метре. Поскольку эта величина, которая никогда не меняется, имеет смысл определить её как константу. И наоборот, значение, которое может измениться, например курс доллара к рублю, лучше всего определять как переменную.

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

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

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

Вместо использования оператора присваивания (=) , как мы это делали при определении переменных, константы создаются с помощью функции define() . У констант также отсутствует префикс $ для имен переменных.

Функция определения принимает три аргумента:

define(name, value, case-insensitive)
  • name — имя, которое вы хотите присвоить константе
  • value — значение, которое будет сохранено в константе
  • case-insensitive — определяет, является ли константа нечувствительной к регистру. По умолчанию это значение false , т.е. с учетом регистра.

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

Пример

 define("GREETING", "Добро пожаловать на wm-school.ru!"); 
echo GREETING;
?>

Обратите внимание, что мы не указали третий параметр при определении константы т.к. его значение по умолчанию false , т.е. с учетом регистра.

Давайте создадим константу с именем без учета регистра:

Пример

 define("GREETING", "Добро пожаловать на wm-school.ru!"); 
echo greeting;
?>

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

Часто бывает полезно узнать, действительно ли определена константа. Этого можно добиться с помощью функции defined() . Функция defined() принимает имя проверяемой константы в качестве аргумента и возвращает значение true или false , чтобы указать, существует ли эта константа.

Читайте также:  Allow php write files

Например, предположим, что мы хотим узнать, определена ли константа с именем MY_FIRST_CONSTANT. Мы можем просто вызвать функцию defined() , передавая имя, а затем протестировать результат с помощью оператора if . else (см. Условные операторы PHP для более подробной информации об использовании if . else ) :

Пример

 define ('MY_FIRST_CONSTANT', 'wm-school.ru'); 
if (defined ('MY_FIRST_CONSTANT'))
<
echo "Константа определена"; // выведет "Константа определена"
>
else
<
echo "Константа не определена";
>
?>

Результат выполнения кода:

Постоянные массивы PHP

В PHP7 вы можете создать константу массива с помощью функции defined() :

Пример

 define("fruit", [ 
"apple",
"pear",
"plum"
]);
echo fruit[0];
?>

Результат выполнения кода:

Глобальные константы

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

В следующем примере константа используется внутри функции не смотря на то, что она определена вне функции:

Пример

 define("GREETING", "Добро пожаловать на wm-school.ru!");

function myTest() echo GREETING;
>

myTest();
?>

Результат выполнения кода:

Источник

defined

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

Замечание:

Если необходимо узнать о существовании переменной, то используйте isset() , так как defined() применима лишь для констант. Если вам необходимо узнать о существовании функции, то используйте function_exists() .

Список параметров

Возвращаемые значения

Возвращает true , если именованная константа, указанная в параметре constant_name , была определена, false в противном случае.

Примеры

Пример #1 Проверка констант

/* Важно учесть необходимость использования кавычек. Данный пример проверяет,
* является ли строка ‘TEST’ именем константы TEST. */
if ( defined ( ‘TEST’ )) echo TEST ;
>

interface bar const test = ‘foobar!’ ;
>

class foo const test = ‘foobar!’ ;
>

var_dump ( defined ( ‘bar::test’ )); // bool(true)
var_dump ( defined ( ‘foo::test’ )); // bool(true)

Пример #2 Проверка вариантов перечисления (начиная с PHP 8.1.0)

enum Suit
case Hearts ;
case Diamonds ;
case Clubs ;
case Spades ;
>

var_dump ( defined ( ‘Suit::Hearts’ )); // bool(true)

Читайте также:  Что такое html запрос

Смотрите также

  • define() — Определяет именованную константу
  • constant() — Возвращает значение константы
  • get_defined_constants() — Возвращает ассоциативный массив с именами всех констант и их значений
  • function_exists() — Возвращает true, если указанная функция определена
  • Смотрите раздел Константы

User Contributed Notes 16 notes

My preferred way of checking if a constant is set, and if it isn’t — setting it (could be used to set defaults in a file, where the user has already had the opportunity to set their own values in another.)

defined ( ‘CONSTANT’ ) or define ( ‘CONSTANT’ , ‘SomeDefaultValue’ );

// Checking the existence of a class constant, if the class is referenced by a variable.

class Class_A
const CONST_A = ‘value A’;
>

// When class name is known.
if ( defined( ‘Class_A::CONST_A’ ) )
echo ‘Class_A::CONST_A defined’;

// Using a class name variable. Note the double quotes.
$class_name = Class_A::class;
if ( defined( «$class_name::CONST_A» ) )
echo ‘$class_name::CONST_A defined’;

// Using an instantiated object for a variable class.
$object_A = new $class_name();
if ( defined( get_class($object_A).’::CONST_A’ ) )
echo ‘$object_A::CONST_A defined’;

Before using defined() have a look at the following benchmarks:

true 0.65ms
$true 0.69ms (1)
$config[‘true’] 0.87ms
TRUE_CONST 1.28ms (2)
true 0.65ms
defined(‘TRUE_CONST’) 2.06ms (3)
defined(‘UNDEF_CONST’) 12.34ms (4)
isset($config[‘def_key’]) 0.91ms (5)
isset($config[‘undef_key’]) 0.79ms
isset($empty_hash[$good_key]) 0.78ms
isset($small_hash[$good_key]) 0.86ms
isset($big_hash[$good_key]) 0.89ms
isset($small_hash[$bad_key]) 0.78ms
isset($big_hash[$bad_key]) 0.80ms

PHP Version 5.2.6, Apache 2.0, Windows XP

Each statement was executed 1000 times and while a 12ms overhead on 1000 calls isn’t going to have the end users tearing their hair out, it does throw up some interesting results when comparing to if(true):

1) if($true) was virtually identical
2) if(TRUE_CONST) was almost twice as slow — I guess that the substitution isn’t done at compile time (I had to double check this one!)
3) defined() is 3 times slower if the constant exists
4) defined() is 19 TIMES SLOWER if the constant doesn’t exist!
5) isset() is remarkably efficient regardless of what you throw at it (great news for anyone implementing array driven event systems — me!)

May want to avoid if(defined(‘DEBUG’)).

Читайте также:  Python django run app

You can use the late static command «static::» withing defined as well. This example outputs — as expected — «int (2)»

abstract class class1
<
public function getConst ()
<
return defined ( ‘static::SOME_CONST’ ) ? static:: SOME_CONST : false ;
>
>

final class class2 extends class1
<
const SOME_CONST = 2 ;
>

var_dump ( $class2 -> getConst ());
?>

Источник

Как проверить константу php

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

Оператор const

Для определения константы применяется оператор const , при этом в названии константы знак доллара $ (в отличие от переменных) не используется.

Обычно названия констант используют заглавные символы, но это условность.

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

PHP позволяет устанавливать значения констант на основе вычисляемых выражений:

Единственное исключение — мы не сможем изменить значение константы. То есть выражение PI = 3.1415; , которое должно изменить значение константы, не срабатает.

Функция define

Также для определения константы может применяться функция define() , которая имеет следующую форму:

define(string $name, string $value)

Параметр $name передает название константы, а параметр $value — ее значение. Значение константы может представлять тип int, float, string, bool, null или массивы.

Например, определим числовую константу:

Магические константы

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

  • __FILE__ : хранит полный путь и имя текущего файла
  • __LINE__ : хранит текущий номер строки, которую обрабатывает интерпретатор
  • __DIR__ : хранит каталог текущего файла
  • __FUNCTION__ : название обрабатываемой функции
  • __CLASS__ : название текущего класса
  • __TRAIT__ : название текущего трейта
  • __METHOD__ : название обрабатываемого метода
  • __NAMESPACE__ : название текущего пространства имен
  • ::class/span>: полное название текущего класса

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

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

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

Источник

Оцените статью