Php 对象以其原始名称传入参数?

Php 对象以其原始名称传入参数?,php,object,Php,Object,我想在模板中使用不同的对象。在站点的不同部分创建不同的对象 目前我的代码是 public function notify ($template, $info) { ob_start(); include $template; $content = ob_get_clean(); //... more further code } 正如您看到的$info参数。我不想在模板中使用$info,但我要使用$photo、$admin或任何传递给它的东西 我喜欢用它 //

我想在模板中使用不同的对象。在站点的不同部分创建不同的对象

目前我的代码是

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); 
我该怎么做?无法使用全局,因为它位于函数内部,并且函数在站点的不同位置/部分被动态调用,可以进一步扩展。

解决方案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\u template\u feed.php

...
<?=$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');

解决方案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\u template\u feed.php

...
<?=$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');

我想要一个有力的方法。这么多不想做的事。但是我有一种感觉,没有它我做不到/@Basit,这不仅仅是一种感觉。我们不能从php中获取变量的名称吗?@Basit,不,我们不能,正如第一行中所解释的。我们想要一些强大的方法来实现它。这么多不想做的事。但是我有一种感觉,没有它我做不到/@Basit,这不仅仅是一种感觉。我们不能从php中获取变量的名称吗?@Basit,不,我们不能,正如第一行中解释的那样。