PHP: Можете ли вы передать включение через функцию? - PullRequest
0 голосов
/ 06 февраля 2019

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

Например, метод PHP include выводит содержимое файла.Я хотел бы вывести содержимое файла, но сначала запустил их через другую функцию.

Например:

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

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

Если я включу через такую ​​функцию, как include_filter , код будет включен локально только внутри функции, а не в строку, где была вызвана функция ( строка 4 в примере).

1 Ответ

0 голосов
/ 06 февраля 2019

Оператор include не выводит содержимое файла.Тем не менее, он оценивает файл, который вы включаете, поэтому, если этот файл содержит какие-либо операторы echo, тогда да, они выполняются, как только вы включаете этот файл.

Вы можете использоватьвыходной буфер, чтобы перехватить этот вывод и что-то с ним сделать, прежде чем повторно echo использовать его:

includes_file.php :

<?php
echo "This came from an included file.";

main_file.php :

<?php
function include_filter($path) {
    ob_start();
    include $path;
    $output = ob_get_contents();
    ob_end_clean();

    echo str_replace("an included file", "a filter function", $output);
}

include_filter("included_file.php");
// will output "This came from a filter function."

Демонстрация: https://3v4l.org/2XkL7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...