Включайте постоянный в строку без конкатенации

Существует ли путь в PHP для включения константы в строку без конкатенации?

define('MY_CONSTANT', 42);

echo "This is my constant: MY_CONSTANT";
154
задан silkfire 3 August 2013 в 19:42
поделиться

5 ответов

Нет.

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

constant () - альтернативный способ получить константу, но вызов функции также не может быть помещен в строку без конкатенации.

Руководство по константам в PHP

135
ответ дан 23 November 2019 в 21:59
поделиться

Да, это так (в некотором роде;)) :

define('FOO', 'bar');

$test_string = sprintf('This is a %s test string', FOO);

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

104
ответ дан 23 November 2019 в 21:59
поделиться

Вы могли бы сделать:

define( 'FOO', 'bar' );

$constants = get_defined_constants(true); // the true argument categorizes the constants
$constants = $constants[ 'user' ]; // this gets only user-defined constants

echo "Hello, my name is {$constants['FOO']}";
11
ответ дан 23 November 2019 в 21:59
поделиться

Если вы действительно хотите отображать константу без конкатенации , вот решение:

define('MY_CONST', 300);
echo 'here: ', MY_CONST, ' is a number';

примечание : в этом примере эхо принимает ряд параметров ( посмотрите на запятые ), поэтому это не настоящая конкатенация

Echo ведет себя как функция, она принимает больше параметров, она более эффективна, чем конкатенация, потому что ей не нужно конкатенацию, а затем эхо, она просто отображает все без необходимости создание нового объединенного объекта String :))

EDIT

Также, если вы рассматриваете объединение строк, передачу строк как параметров или запись целых строк с помощью " , , (версия с запятыми) всегда самый быстрый, затем идет . (конкатенация с одинарными кавычками '), а самый медленный метод построения строк - использование двойных кавычек ", поскольку выражения, написанные таким образом, должны оцениваться по объявленным переменным и функциям ..

13
ответ дан 23 November 2019 в 21:59
поделиться
define('FOO', 'bar');
$constants = create_function('$a', 'return $a;');
echo "Hello, my name is {$constants(FOO)}";
14
ответ дан 23 November 2019 в 21:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: