2015-11-09 3 views
0

У меня есть что-то вроде этого в PHPСтрока интерполяции для встроенных функций

$file = "$dir/" . basename($url); 

basename является встроенной функцией. Есть ли способ, которым я могу использовать синтаксис строковой интерполяции для конкатенации вместо синтаксиса .?

Для функций-членов класса, это работает:

$file = "$dir/ {$this->someFunc($url)}"; 

Как аналогичным образом указать внутренние функции в кавычках? Только учится.

+0

Не чисто, интерполяция работает на переменных; но вызовы функций не совпадают с переменными –

+0

Вы можете создать оболочку класса, которая будет выполнять вызов функции для вас –

+0

Хорошо. Я ожидал, что должен быть синтаксис, так как работает что-то вроде '' {$ x-> y()} "'. Благодарю. – nawfal

ответ

4

Вы можете сделать это следующим образом:

$foo = 'bar'; 

$func = "strtoupper"; 
echo "test: {$func($foo)}"; 
//or for assignments: 
$path = sprintf(
    '%s/%s', 
    $dir, 
    basename($file) 
); 

example here

Но на самом деле, вы не должны: это запутывает то, что вы на самом деле делает, и делает тривиальной задачей выглядеть намного более сложной чем это действительно (отладка и поддержание такого кода - кошмар).
лично я предпочитаю держать конкатенацию, или -если want- использовать printf здесь:

printf(
    'Test: %s', 
    strtoupper($foo) 
); 
Смежные вопросы