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

您还可以将变量的名称作为第三个参数传递:

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 回答