[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Heredoc Фигурный синтаксис
shwonder
Пытаюсь делать так:
	$lang_default = 'en';
$lang_map = ['ru'=>0,'en'=>1];
$words =
[

'Один'=>['Один','One']
,
'Два'=>['Два','Two']
];

function L($word,$lang=false){
global $lang_default,$words,$lang_map;
$lang = (!!$lang ? $lang : $lang_default);
return (isset($words[$word][$lang_map[$lang]]) ? $words[$word][$lang_map[$lang]] : $word);
}

echo "Abama {${L('Один')}}";

echo <<<EOD
по идее должно вывести результат выполнения функции L('Один') но не выводит: {${L('Один')}}
EOD;



В чем подвох, если в функции вместо return поставить echo то результат выводится (то есть функция вызывается) но он выводится до строки куда происходит вставка что в принципе логично... Пожалуйста подскажите
Игорь_Vasinsky
пирдец ты зафигачил вывод)) кто научил?




_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
	$lang_default = 'en';
$lang_map = ['ru'=>0,'en'=>1];
$words =
[

'Один'=>['Один','One']
,
'Два'=>['Два','Two']
];

function L($word,$lang=false){
global $lang_default,$words,$lang_map;
$lang = (!!$lang ? $lang : $lang_default);
return (isset($words[$word][$lang_map[$lang]]) ? $words[$word][$lang_map[$lang]] : $word);
}

echo "Abama ".L('Один');

echo '<br/>';

$str = "по идее должно вывести результат выполнения функции L('Один') но не выводит: ".L('Один');

$res = <<<EOD
{$str}
EOD;

echo $str;


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
inpost
shwonder
echo L($arg1,$agr2);


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Guest
После фигурной скобки { должен идти $ поэтому функция не запустится в {}
shwonder
https://php.net/manual/ru/language.types.st...g.syntax.nowdoc

научили здесь ))) "Сложный (фигурный) синтаксис"

а переменную вставлять я умею, задача как раз таки результат выполнения функции всунуть, и функция выпоняется значит синтаксис нормальный вот только она не выводит ничего ))
shwonder
кажется понял "echo "Это значение переменной по имени, которое возвращает функция getName(): {${getName()}}"" тоесть функция должна вернуть переменную в которой лежит текст


нет не понял (( нет никакой разницы что я верну переменную или результат вычеслений одна фигня ... ничего не выводится, а вот если ставлю в функции echo то выводится но не так как нужно


получается функция должна возвращать имя переменной в которой лежит строка... печалька
Hello
shwonder
Используй замыкания.
	
$LClosure = function($word,$lang=false) {
return L($word,$lang);
}
echo "Abama {$LClosure('Один')}";

echo <<<EOD
по идее должно вывести результат выполнения функции L('Один') но не выводит: {$LClosure('Один')}
EOD;


_____________
VPS от 5$, первые 2 месяца - бесплатно.
stump
Так будет работать код:
$lang_default = 'en';
$lang_map = ['ru'=>0,'en'=>1];
$words =
[

'Один'=>['Один','One']
,
'Два'=>['Два','Two']
];

function L($word,$lang=false){
global $lang_default,$words,$lang_map;
$lang = (!!$lang ? $lang : $lang_default);
return (isset($words[$word][$lang_map[$lang]]) ? $words[$word][$lang_map[$lang]] : $word);
}

$One = "Лох";
$Two = "Индюк";

echo "Abama {${L('Один')}}";
echo "Abama {${L('Два')}}";


Только
global $lang_default,$words,$lang_map;
- нехорошо. А это:
return (isset($words[$word][$lang_map[$lang]]) ? $words[$word][$lang_map[$lang]] : 
криво.
А это:
{${L('Два')}}
надо делать с учетом этого: https://php.net/manual/ru/language.types.string.php#94159

А вообще:
Игорь_Vasinsky прав. Надо делать так:
echo "Abama ".L('Один');


_____________
Трус не играет в хокей
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.