-1

したがって、template.phpというテンプレートファイルがあり、その中には次のものがあります。

<html>
some other content
<?php $name ?>
</html>

基本的に、データベースから名前を取得して$ nameに挿入し、そのページ全体を新しいファイルとして保存します。

したがって、データベースにJoeという名前があったとすると、作成する新しいファイルには次のコンテンツが含まれます。

<html>
some other content
Joe
</html>

私が抱えている唯一の問題は、テンプレートファイルから変数を実際に置き換えるための適切な関数を見つけ、それを新しいファイルに保存できるようにすることです。

4

2 に答える 2

1

しばらく前にこの質問に答えたものを見てください。そこで、「変数解析」が通常どのように機能するかを説明します。

テンプレート ローダーを作成するときは、通常、出力バッファリングを php で使用しますinclude。これにより、準備が整う前にコンテンツを表示することなく、ページを php ファイルとして実行できます。この方法で php ファイルを「解析」する利点は、ループと関数を引き続き実行できることです。

PHP で出力バッファリングを使用して必要なものを作成する方法の例を次に示します。

テンプレート template.php

<html>
some other content
<?php $name ?>
</html>

データベースのコードなどの場所 index.php

<?php

$name = 'John Doe';

if( /* some sort of caching system */ ) {
  $parsed_template = file_get_contents('parsed_template.html');
}else {
  ob_start();
  include 'template.php';
  $parsed_template = ob_get_clean();

  file_put_contents('parsed_template.html', $parsed_template);
}

echo $parsed_template;
?>
于 2012-10-11T02:34:32.553 に答える
1

これは通常、テンプレートが機能する方法ではありません。テンプレート ファイルを用意し、それらの値を変数に置き換えて、それをユーザーに表示する必要があります。これらの生成されたテンプレート (常に同じもの) をキャッシュすることはできますが、ユーザーごとに新しいテンプレート ファイルを作成して永続的に保存することはありません。これにより、アプリケーションの管理と更新が必要以上に難しくなります。

RainTPLのような単純なテンプレート システムを使用することをお勧めします。それは私がほとんどのプロジェクトで使用しているものです...使い方は非常に簡単で、必要なすべての基本機能を提供します。

これにはPHPだけを使用することもできます...これをカバーするSOに関する回答がいくつかあるので、ここには入りません。

于 2012-10-11T02:37:14.827 に答える