PHP-буфер включен файл как анонимная функция

У меня есть своего рода файл шаблона, который можно назвать filename.php:

<h1>
  <?= $test . ' world'; ?>
</h1>
<p>
Some text
</p>

Тогда у меня есть функция в файле index.php, которая выглядит так?

<?php
function test($args) {
  $test = $args;
  include 'filename.php';
}

test('Hello');
test('Hello');
test('Hello');

Этот код работает. Он выводит включенные данные 3 раза.

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

Проблема

Я не могу придумать, как нужно только один раз включить filename.php (теперь он загружается 3 раза). Поскольку он принимает аргументы, он не может быть возвращен в виде строки. Думаю, его нужно вернуть как анонимную функцию. Тогда я мог бы буферизовать свой шаблон и по-прежнему использовать его с новыми значениями.

Приветствуются любые творческие идеи.

Думаю, лучше создать в ней строку шаблона и значения str_replace/preg_replace. Но даже в шаблонизаторах вы можете создавать подшаблон include столько раз, сколько вам нужно.

u_mulder 07.11.2018 13:46
«(Сейчас загружено 3 раза)» - ну и что…?
misorude 07.11.2018 13:46

Если вам нужен язык шаблонов, я бы выбрал испытанный. Однако вы, конечно, можете прочитать содержимое файла filename.php и сделать eval(' ?>' . $file_contents . '<?php ');, см. 3v4l.org/70dgu :-)

jeroen 07.11.2018 13:48

@misorude В реальном мире они могут загружаться 100 раз.

Jens Törnell 07.11.2018 13:53

@jeroen Я слышал, что eval - это плохо и опасно, но я узнаю об этом больше, спасибо! знак равно

Jens Törnell 07.11.2018 13:53
«В реальном мире они могут быть загружены 100 раз» - ну ну в случае с что - ну и что? Вы пытаетесь исправить здесь какую-либо реальную, измеримую проблему - или, может быть, просто воображаемую?
misorude 07.11.2018 13:54

Ну, вы хотите оценивать ваш php-скрипт как php, что же делает и include ...

jeroen 07.11.2018 13:56

@misorude, проблема также может заключаться в том, что настоящий файл шаблона очень большой ...

Justin T. 07.11.2018 13:56

На самом деле это не проблема. Шаблон (если это шаблон) просто показывает данные. Если вы показываете 100 тысяч строк данных - это не проблема шаблона, это проблема логики приложения - вы должны использовать разбиение на страницы, разогревать кеш или что-то еще. Итак, нет ничего необычного в том, чтобы включать файл столько раз, сколько вам нужно.

u_mulder 07.11.2018 14:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
44
0

Другие вопросы по теме