PHP动态定制作用域中的变量
我正在用php创建一个应用程序,其中有一个包含php模板文件的函数。出于可用性的考虑,我想动态定义哪些变量将在包含的文件范围内可用。例如:PHP动态定制作用域中的变量,php,templates,dynamic,scope,include,Php,Templates,Dynamic,Scope,Include,我正在用php创建一个应用程序,其中有一个包含php模板文件的函数。出于可用性的考虑,我想动态定义哪些变量将在包含的文件范围内可用。例如: includeTemplate( 'myinclude.php', array( 'var1' => 'key1', 'var2' => 'key2', ) ); function includeTemplate( $path, $variables ) { include( $path ); } 在myinclude
includeTemplate( 'myinclude.php', array(
'var1' => 'key1',
'var2' => 'key2',
) );
function includeTemplate( $path, $variables ) {
include( $path );
}
在myinclude.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)需要“解析变量,然后将其内容提供给include函数。不包括模板的文件,为什么不看一看呢?使用它可以为“基本”模板创建一个类,然后为扩展原始模板的其他模板创建类
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;
显然,如果您不熟悉面向对象编程,您必须学习一点面向对象编程,但这可能是更好的方法。他希望动态包含文件。(给定一个字符串,尝试将该字符串作为同一文件夹中的文件包含)@MarcoMura-他还希望使用
$variables
数组中的变量作为变量(例如echo$var1;
)从他的模板中;在include之前提取允许,如果它们包含在函数调用中,那么他可以将它们视为$variables数组,然后=),但是他的模板没有包含对$variables
的单个引用,只有$var1
和$var2
有趣的是,我问这个问题的原因实际上是为了说明ve我的应用程序oop编程风格。include是一个html文件,类似于wordpress的模板php文件。然而,wordpress使用类似于so foo_bar的函数进行操作,而我需要类似于$foo->bar的函数。我的问题是如何在文件中自动包含$foo。php实际上有一个名为autoload的函数,您可以使用它se将自动包含类文件。这样,您只需包含自动加载功能。如果您想了解该功能,请参阅以下链接: