PHP 动态自定义作用域中的变量


PHP customizing variables in the scope dynamically

我正在用php创建一个应用程序,其中我有一个包含php模板文件的函数。为了可用性,我想动态定义哪些变量在包含的文件范围内可用。例如:

includeTemplate( 'myinclude.php', array(
    'var1' => 'key1',
    'var2' => 'key2',
) );
function includeTemplate( $path, $variables ) {
    include( $path );
}

在我的包含中.php

echo $var1; // key1
echo $var2; // key2

这可能吗?如果没有,对于如何实现类似目标,还有其他建议吗?

您的变量作为键/值对数组传递。要按名称/键使用它们,您必须从数组中提取()它们作为单独的命名变量

extract($variables);

虽然这不是一个非常干净的方法,但要做的事情

我知道它的答案很旧,但要让它工作,您可能需要这样做:

includeTemplate( 'myinclude.php', array(
    'var1' => 'key1',
    'var2' => 'key2',
) );
function includeTemplate( $path, $variables ) {
    include("$path");
}

include($path) 需要 " 来解析 var,然后将其内容提供给 Include 函数。

与其为您的模板包含文件,为什么不看看面向对象的 php?使用继承,您可以为"基"模板创建一个类,然后为扩展原始模板的其他模板创建类。

class baseTemplate 
{
    public $var1 = value; 
    public function __construct()
    {
    }
}
class subTemplate extends baseTemplate
{
    public $var2 = value; 
    public function __construct()
    {
        parent::__construct();
    }
}

变量将仅链接到其相应的类和父级。

//contains $var1
$template1 = new baseTemplate();
echo $template1->var1;
//contains $var1 & $var2
$template2 = new subTemplate();
echo $template2->var1 . " " . $template2->var2;

显然,如果你不熟悉这个,你必须学习一些关于面向对象编程的知识,但它可能是更好的方法。