私はこのようなクラスを持っています:
class main {
private static $content;
public function ini() {
include 'content_a.php';
self::$content = new $content;
}
public function content($snippet, $addclass=false) {
return self::$content->snippet;
}
}
一部の入力を解析し、各ページロードの先頭で 1 回実行される ini() に含めるファイルを決定します。この例では が含まれていますcontent_a.php
が、他にも ( content_b.php
、content_c.php
、 ...) あります。このメソッドは、スクリプトの残りの部分で何度も呼び出される content() で使用するために、ファイルのコンテンツを $content プロパティに保存します。
ファイル content_a.php は次のようになります。
class content {
public $text = <<<FOO
<div class="default $addclass">Hello World</div>
FOO;
}
a、b、c のいずれであっても、見た目は常に同じです。ヒアドキュメント内の実際のコンテンツのみが異なります。各ファイルには、いくつかのスニペットが含まれています。この例では、( $text
) は 1 つだけです。
私はこのようなスニペットをレンダリングしています:
echo $main->content('text');
...これは完全に機能します。しかし、このようなパラメータを渡そうとすると$addclass
...
echo $main->content('text', 'bar');
...エラーが発生していますunexpected T_VARIABLE, expecting T_END_HEREDOC
。変数を中かっこで囲むと、unexpected T_CURLY_OPEN, expecting T_END_HEREDOC
.
私が間違っていることを考えていますか、またはこれを行うためのより良い方法はありますか?