0

私はこのようなクラスを持っています:

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.phpcontent_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.

私が間違っていることを考えていますか、またはこれを行うためのより良い方法はありますか?

4

2 に答える 2

1

クラス変数で式を使用することは PHP では許可されていません。クラス変数に割り当てられている場合は、ヒアドキュメント内の静的コンテンツのみを使用できます。

$addclass の代わりに %s を使用して、sprintf($this->text,$addClass); を使用して置き換えることができます。

于 2013-11-11T21:43:22.067 に答える