Включить PHP-файл в виде строки - PullRequest
20 голосов
/ 06 января 2012

возможно ли сделать что-то подобное?

// file.php
$string = require('otherfile.php');
echo $string;

// otherfile.php
<!DOCTYPE html>
<html>
<head><title>Test</title></head>
<body>
<?php require 'body.php';?>
</body>
</html>

// body.php
<p>Lorem ipsum something</p>

И получить этот вывод?

<!DOCTYPE html>
<html>
<head><title>Test</title></head>
<body>
<p>Lorem ipsum something</p>
</body>
</html>

Я знаю, что код не будет работать, но я надеюсь, вы понимаетеЯ имею в виду.

Ответы [ 6 ]

50 голосов
/ 06 января 2012

file.php

ob_start();
include 'otherfile.php';
$string = ob_get_clean();
11 голосов
/ 06 января 2012
$string = file_get_contents('otherfile.php',TRUE);
echo $string

Использование аргумента TRUE для file_get_contents () означает, что он будет искать, используя путь включения, как обычное включение или требуют

3 голосов
/ 06 января 2012

Еще одна интересная вещь, которую нужно знать, но ответ SmokeyPHP может быть лучше:

<?php
$var = require 'myfile.php';

myfile.php:

<?php
return 'mystring';
1 голос
/ 06 августа 2013

Полагаю, вы уже решили проблему. Я столкнулся с той же проблемой в эти дни, и я нашел симпатичное решение с использованием функций eval, file_get_contents и буферизации вывода:

ob_start();
eval('?>' . file_get_contents( $fileToRequire, TRUE ) . '<?php ');
$this->output = ob_get_contents();
ob_end_clean();

Единственное, что вам нужно, это поместить php-код между тегами <?php ?> и не оставлять открытым любой php-тег.

'?>' Является обязательным, иначе вы получите ошибку из функции eval

Надеюсь, это поможет!

Ура!

0 голосов
/ 06 января 2012

Да, вы можете использовать оператор возврата в файле, и требует, чтобы и include возвращал возвращаемое значение, но вам пришлось бы изменить файл так, чтобы он сказал что-то более похожее на

<?php
    return '<p>Lorem ipsum something</p>';
?>

check example #5 под включить документацию http://www.php.net/manual/en/function.include.php

0 голосов
/ 06 января 2012
<?php require "otherfile.php";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...