[php] Включить константу в строку без конкатенации



Answers

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

define('FOO', 'bar');

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

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

Question

Есть ли способ в PHP включить константу в строку без конкатенации?

define('MY_CONSTANT', 42);

echo "This is my constant: MY_CONSTANT";



define( 'FOO', 'bar');  
$FOO = FOO;  
$string = "I am too lazy to concatenate $FOO in my string";



Я считаю, что это отвечает первоначальному вопросу OP. Единственное, что ключ индекса globals, похоже, работает только в нижнем регистре.

define('DB_USER','root');
echo "DB_USER=$GLOBALS[db_user]";

Вывод:

DB_USER=root



Вы можете сделать:

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']}";



Самый простой способ -

define('MY_CONSTANT', 42);

$my_constant = MY_CONSTANT;
echo "This is my constant: $my_constant";

Другой способ использования (s)printf

define('MY_CONSTANT', 42);

// Note that %d is for numeric values. Use %s when constant is a string    
printf('This is my constant: %d', MY_CONSTANT);

// Or if you want to use the string.

$my_string = sprintf('This is my constant: %d', MY_CONSTANT);
echo $my_string;



Как указывали другие, вы не можете этого сделать. PHP имеет функцию constant() которая не может быть вызвана непосредственно в строке, но мы можем легко обойти это.

$constant = function($cons){
   return constant($cons);
};

и базовый пример его использования:

define('FOO', 'Hello World!');
echo "The string says {$constant('FOO')}"; 



Links