Могу ли я передать определенную константу в функцию через переменную в PHP?

У меня есть следующий код:

DEFINE('DEFINEDTESTVAR', 'Hello World');

function callit($callVar) {
  echo "The call is ".$callVar;
}


$passthis = 'DEFINEDTESTVAR';
callit($passthis);

Я знаю, что могу сделать callit(DEFINEDTESTVAR) но это не то, что я хочу сделать. Является ли это возможным?

4 ответа

Решение

Либо передайте саму константу:

$passthis = DEFINEDTESTVAR;

Или получить доступ к нему через constant() который позволяет вам проверять нулевое значение в случае, если оно не определено (для неопределенных констант, передача константы буквально приводит к строке с именем константы):

$passthis = constant('DEFINEDTESTVAR');
define('DEFINEDTESTVAR', 'Hello World'); // you should use define

function callit($callVar) {
  echo "The call is ".$callVar;
}    

$passthis = DEFINEDTESTVAR; // no need to use quotes
callit($passthis);

Вы можете получить значение константы из строки с помощью constant(). Он вернет ноль, если именованная константа не найдена.

$passthis = constant('DEFINEDTESTVAR');
callit($passthis);
<?php 
DEFINE('DEFINEDTESTVAR', 'Hello World');

function callit($callVar) {
  echo "The call is ".$callVar;
}


$passthis = DEFINEDTESTVAR;
callit($passthis);
Другие вопросы по тегам