第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 include 將變量傳遞到另一個頁面

使用 include 將變量傳遞到另一個頁面

PHP
心有法竹 2023-03-04 17:58:58
我知道對此有很多疑問,但我的情況很奇怪。這是我的例子,我有一個名為 Theme 的類,它具有包含主題部分的功能;class Theme {  function getThemePart($part, $lang) {    include_once 'theme/theme.'.$part.'.php';  }}在我的 index.php 頁面中,我調(diào)用它;$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 中。這個工作怎么樣?
查看完整描述

1 回答

?
子衿沉夜

TA貢獻1828條經(jīng)驗 獲得超3個贊

您的“頁腳”文件僅存在于 getThemePart 函數(shù)中。因此,它不“知道”外部聲明的任何內(nèi)容。


您會注意到甚至該{$theme}對象實際上也是未定義的(您可以通過 using 使其工作$this)。


您需要做的是傳遞某種對主題元素需要知道的“世界”或環(huán)境的引用(這將是一種依賴注入):


$env  = [ 'lang' => 'en', ... ];

您可以將其存儲在主題中:


private $env;


public function setEnv($env) {

    $this->env = $env;

}

現(xiàn)在,如果您使用 初始化主題$theme->setEnv($env),則在 include 中您將能夠調(diào)用{$this->env['lang']}. 或者你可以構建一個輔助函數(shù),或者甚至更好,聲明一個允許你編寫$this->lang.


就個人而言,我通常更喜歡不同的方法,并將序列替換為using{{name}}的內(nèi)容。$this->env[name]preg_replace_callback()


查看完整回答
反對 回復 2023-03-04
  • 1 回答
  • 0 關注
  • 113 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號