Что я нашел в Интернете.
\Blade::directive('hello', function ($expression) {
list($greet, $name) = explode(', ', $expression);
return "<?php echo {$greet} . ' ' . {$name}; ?>";
});
Здесь чувствуется, что во время выполнения функция будет вызываться. Тогда почему бы просто не сделать
\Blade::directive('hello', function ($expression) {
list($greet, $name) = explode(', ', $expression);
return $greet . ' ' . $name;
});
Я видел много примеров, следующих шаблону return "<?php echo ..."
, и я действительно не понимаю сути.
РЕДАКТИРОВАТЬ, чтобы уточнить из комментариев и ответов, ключевые предположения выделены жирным шрифтом:
В первом примере $expression взрывается в функции, мне интересно, как Blade может динамически взрываться только из возвращаемого php-кода? Такой код заставляет меня поверить, что и директивная функция, и возвращаемый код выполняются при каждом рендеринге?
Во-вторых, если оператор return содержит открывающие теги PHP, я полагаю, что он обрабатывается как стандартный PHP-скрипт, так почему бы не вернуть строку?
return "<?php echo {$greet} . ' ' . {$name}; ?>";
является окончательным результатом, который предполагает замену директивы. Если ты просто вернешься, то ничего не будет. Это ответственность вашего куратора делать то, что вы хотите. - person The Alpha   schedule 01.02.2018