将变量传递到带有include的另一个页面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将变量传递到带有include的另一个页面相关的知识,希望对你有一定的参考价值。
我知道对此有很多疑问,但我的情况很奇怪。
这里是我的情况,我有一个名为Theme的类,它具有包含主题部分的功能;
class Theme
function getThemePart($part, $lang)
include_once 'theme/theme.'.$part.'.php';
并且在我的index.php页面中,我称呼它;
$theme->getThemePart('footer', $lang);
直到这里都很正常,但我还有一个$ lang变量。我在index.php中声明了它,但也在theme.footer.php文件中使用了它。像这样;
<footer class="sticky-footer">
<div class="container-fluid copyright">
<span class="float-right"><?=$lang['footer]?><a href="<?=$lang['footer_link]?>" target="_blank"><u><?=$theme->escLang('footer_jc','html')?></u></a></span>
</div>
</footer>
[我认为您意识到getThemePart的属性中有一个$ lang,它是没有用的,但是,当我删除它时,在index.php文件中,$ lang ['footer']和$ lang ['footer_link']不会打印但是,当我将无用的$ lang变量添加到getThemePart时,它们将被打印。
这项工作如何?
您的“页脚”文件仅存在于getThemePart函数内部。因此,它不会“知道”在外部声明的任何内容。
您会注意到甚至$theme
对象实际上也是未定义的(您可以改为使用$this
使它起作用)。
您需要做的是传递对主题元素需要知道的“世界”或环境的某种引用(这是一种依赖注入):
$env = [ 'lang' => 'en', ... ];
您可以将其存储在主题内:
private $env;
public function setEnv($env)
$this->env = $env;
现在,如果您使用$theme->setEnv($env)
初始化主题,则在包含内容内,您将可以调用$this->env['lang']
。或者,您可以构建一个辅助函数,或者甚至更好,声明一个magic getter,使您可以编写$this->lang
。
个人,我通常更喜欢其他方法,并使用name
将$this->env[name]
之类的序列替换为preg_replace_callback()
的内容。
以上是关于将变量传递到带有include的另一个页面的主要内容,如果未能解决你的问题,请参考以下文章
如何使用java将数据从片段传递到android中的另一个片段?
将变量从一个表传递到另一个 PHP 页面中的另一个 [重复]
如何将数据从一个活动传递到android中的另一个活动片段? [复制]