0

テンプレート内で別のオブジェクトを使用したい。サイトのさまざまなセクションにさまざまなオブジェクトが作成されます。

現在、私のコードは

public function notify ($template, $info)
{
    ob_start();
    include $template; 
    $content = ob_get_clean();
    //... more further code
}

ご覧のように $info パラメータ。テンプレート内で $info を使用したくありませんが、$photo、$admin、またはそれに渡されるものは何でも使用する必要がありました。

私が好きに使う

// for feed
$user->notify('email_template_feed.php', $feed);

// for new photo - i would also like to use $user inside templates
$user->notify('email_template_photo.php', $photo); 

どうやってやるの?関数内にあり、サイトのさまざまな場所/セクションで関数が動的に呼び出されるため、グローバルを使用できません。これはさらに拡張できます。

4

1 に答える 1

3

できません

解決策 1

代わりに、配列を使用してその値を抽出できます。

public function notify ($__template, array $info)
{
    ob_start();
    extract($info);
    include $__template; 
    $content = ob_get_clean();
    //... more further code
}

例 1

あなたがそれを呼び出す場合:

$user->notify('email_template_feed.php', array('feed' => $feed));

そしてテンプレート内email_template_feed.php

...
<?=$feed?>
...

それは印刷されます:

...
FEED
...

解決策 2

変数の名前を 3 番目のパラメーターとして渡すこともできます。

public function notify ($template, $info, $name)
{
    ob_start();
    $$name = $info;
    unset($info);
    include $template; 
    $content = ob_get_clean();
    //... more further code
}

例 2

次に、次の方法で呼び出すことができます。

$user->notify('email_template_feed.php', $feed, 'feed');
于 2013-01-21T20:47:12.013 に答える