reanimatorzon
@reanimatorzon

Аналог функции PHP extract для функции?

Пишу свой минимальный шаблонизатор. Чтобы переменные бросить в глобальный для view scope нужна лишь функция extract. А мне нужно еще, чтобы были функции display и fetch c простым вызовом, это реально вообще?


То есть такие вызовы должны приводить к PROFIT:

&lt;?php display('test/test.php'); ?&gt;<br/>
some text<br/>
&lt;?php $f = fetch('test/test.php'); ?&gt;<br/>
&lt;?php echo $f ?&gt;<br/>
...<br/>
  • Вопрос задан
  • 3491 просмотр
Пригласить эксперта
Ответы на вопрос 3
taliban
@taliban
php программист

function display($file)
{
    include $file;
}

function fetch($file)
{
    ob_start();
    include $file;
    return ob_get_clean();
}

Подробней про буферы
Ответ написан
WebSpider
@WebSpider
Если коротко — нет такого аналога. Можно инклюдить файлы с функциями перед вызовом шаблона, можно сделать костыли через eval. Но ИМХО самый правильный способ — реализовать эти функции через статические классы (хелперы)
Ответ написан
@Melz
Мне _кажется_, что вы хотите сделать что-то не то.
1. Глобальные переменные — зло.
Смотрите service container (на пример Pimple)
Пример тут (читайте все): silex-project.org/doc/services.html

2. Мне опять же кажется то, что вы делаете знакомым: ищите о Lambda Functions, Closures
fabien.potencier.org/article/17/on-php-5-3-lambda-functions-and-closures
Может вам нужно что-то такое?

$max_comparator = function ($max)
{
return function ($v) use ($max) { return $v > $max; };
};

$input = array(1, 2, 3, 4, 5);
$output = array_filter($input, $max_comparator(2));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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