このようなものを作ることは可能ですか?
// 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>
コードが機能しないことは知っていますが、私の意味を理解していただければ幸いです。
file.php
ob_start();
include 'otherfile.php';
$string = ob_get_clean();
$string = file_get_contents('otherfile.php',TRUE);
echo $string
File_get_contents()にTRUE引数を使用すると、通常のインクルードやrequireのように、インクルードパスを使用して検索されます。
知っておくべきもう1つのすばらしいことですが、SmokeyPHPの答えの方が良いかもしれません。
<?php
$var = require 'myfile.php';
myfile.php:
<?php
return 'mystring';
はい、ファイルでreturnステートメントを使用できます。requiresとincludesは戻り値を返しますが、ファイルを変更して、次のようなことを言う必要があります。
<?php
return '<p>Lorem ipsum something</p>';
?>
インクルードドキュメントの例5を確認してください http://www.php.net/manual/en/function.include.php
あなたはすでに問題を解決したと思います。私は最近同じ問題に直面し、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関数からエラーが発生します。
それが役に立てば幸い!
乾杯!
Joomlaとdompdfのソリューションが必要ですが、このソリューションを見つけました
ob_start();
require_once JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'file.php';
$html = ob_get_clean();
require_onceでのみ、ロードされたスクリプトでJoomlaのすべての関数を使用できます。 file.phpは、.phpに名前が変更され、phpコードが追加された.htmlファイルです。
Jinjaのようなテンプレートエンジンを使用する http://jinja.pocoo.org/docs/