Я хотел бы включить результаты данного скрипта (скажем, a.php) в другой скрипт (скажем, b.php).
Хотя есть оператор PHP include и их другие аналоги (include_once, require и require_once), кажется, что все они включают содержимое файла, а не его результаты обработки, как я ожидал.
Итак, как я могу сначала обработать a.php, а затем включить его результаты (а не содержимое самого файла) в скрипт b.php?
С другой стороны, если у моего включенного файла (a.php) есть оператор return, весь файл должен быть обработан первым или его содержимое также включено в b.php как есть?
Заранее благодарю за ваши ответы.
a.php:
<?php echo "world";
b.php:
<?php ob_start(); include("a.php"); $a= ob_get_clean(); echo "Hello, $a!";
в<?php ob_start(); include("a.php"); $a= ob_get_clean(); echo "Hello, $a!";
возможно?
Похоже, вы хотите использовать оператора backtick, за которым следует eval . Что-то вроде этого:
$code = `/path/to/myscript.php`; eval($code);
Если myscript.php не является исполняемым, вам придется префикс его с помощью php, как в:
$code = `php /path/to/myscript.php`;
Обратите внимание, что вам нужно полностью доверять myscript.php, иначе это проблема безопасности.
Это, вероятно, не очень хороший дизайн, вы можете подумать о том, есть ли лучший способ сделать то, что вы хотите.
Если a.php
доступен через Интернет, вы можете использовать file_get_contents
с http://
(или https://
). Это позволит получить доступ к вашему скрипту, как к обычной веб-странице, и ваш веб-сервер обрабатывает его через PHP и возвращает результаты.
a.php:
<?php echo 2+2;
b.php:
<?php echo file_get_contents('http://example.com/a.php');
Вывод:
4
Вы также можете использовать буферизацию вывода, как указано выше в комментарии DaveRandom. Тем не менее, это, как правило, не примерный дизайн приложения. Предпочтительно иметь код, который будет возвращать нужные вам результаты, а не echo
их. Так может быть что-то вроде этого:
a.php:
<?php function calculateA() { return 2+2; }
b.php:
<?php include('a.php'); echo calculateA();
в<?php include('a.php'); echo calculateA();
Вывод:
4
Изменить: несколько альтернатив хорошо описаны на странице include
в документации PHP .
Резюме:
Если файл php принадлежит вашему серверу:
ob_start(); $result = eval(file_get_contents('/path/to/your/script.php')); ob_end_clean();
Если нет, но он доступен через HTTP:
$result = file_get_contents('http://path.to/your/script.php');