如果标题还没吓到你,请继续阅读。我正在使用ExpressionEngine网站,我正在编辑成员模板文件。与成员交互相关的所有模板都作为函数存储在一个单独的文件中。
这些函数中的每一个都是一个简单的文档,但是其中许多函数使用我不关心的路径和术语来打印代码。例如,该网站将登录用户称为“客户”而不是“成员”。
无论如何,我正在寻找一种方法来抽象这些值,以便我可以轻松地为这个和未来的项目更改它们。现在,我可以通过在每个函数中定义来在这里打印变量。在定义类之前,我更倾向于在文件的顶部定义这些值,但是我无法通过这里的文档来识别这些值。
这是一个精简的示例文件:
<?php
/* I wish to define variables once in this area */
$globaluserterm = "client";
class profile_theme {
//----------------------------------------
// Member Page Outer
//----------------------------------------
function member_page()
{
$userterm = "client";
return <<<EOF
<div id="{$userterm}-content">
<h1>{$userterm} Account</h1> (Note: This DOES work)
<h1>{$globaluserterm} Account</h1> (Note: This doesn't work)
{include:member_manager}
</div>
EOF;
}
/* END */
//-------------------------------------
// Full Proile with menu
//-------------------------------------
function full_profile()
{
$userterm = "client";
return <<< EOF
<div id="{$userterm}-full-profile">
{include:content}
</div>
EOF;
}
/* END */
}
// END CLASS
?>
答案 0 :(得分:3)
如果每个文件只有一个类,那么在类级别定义值是否足够? E.g。
class profile_theme {
private $globaluserterm = "client";
//....
}
并在函数中:
return <<<EOF
<div id="{$userterm}-content">
<h1>{$userterm} Account</h1> (Note: This DOES work)
<h1>{$this->globaluserterm} Account</h1> (Note: This doesn't work)
{include:member_manager}
</div>
EOF;
答案 1 :(得分:1)
我并不完全明白你的目标,但我认为你所寻找的是像Smarty这样的模板引擎。 (有关更精简的替代方案,请参阅this question。)
在Smarty中,您将准备一个模板文件:
<div id="{$userterm}-content">
<h1>{$userterm} Account</h1> (Note: This DOES work)
<h1>{$globaluserterm} Account</h1> (Note: This doesn't work)
{include:member_manager} /* Don't know how to do this in smarty */
</div>
并预先填充变量值:
$Smarty = new Smarty();
// ... set up caching etc. if needed ...
$Smarty->assign("userterm", $value1);
$Smarty->assign("globaluserterm", $value2);
.....
如果这不是你想要的,你能更详细地解释一下你想做什么吗?