PHP动态定制范围中的变量

时间:2014-11-26 13:54:51

标签: php templates dynamic scope include

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

includeTemplate( 'myinclude.php', array(
    'var1' => 'key1',
    'var2' => 'key2',
) );

function includeTemplate( $path, $variables ) {
    include( $path );
}

在myinclude.php中

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

这可能吗?如果没有关于如何实现类似的任何其他建议?

3 个答案:

答案 0 :(得分:2)

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

extract($variables);

虽然这不是一个非常干净的方法,你正在尝试做什么

答案 1 :(得分:0)

答案我已经过时了,但是为了让它有效,你可能需要这样做:

includeTemplate( 'myinclude.php', array(
    'var1' => 'key1',
    'var2' => 'key2',
) );

function includeTemplate( $path, $variables ) {
    include("$path");
}

包括($ path)需求"解析var,然后将其内容提供给Include函数。

答案 2 :(得分:0)

为什么不看一下object oriented php,而不是包含模板的文件?使用inheritance,您可以为“基本”模板创建一个类,然后为其他扩展原始模板的模板创建类。

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;

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