讨论下PHP的变量注册以及使用。
先从smarty模板说起,众所周知如果用这个东东注册一个变量$smarty->assign($aaa,'123');
$smarty->display('a.tlp');
那么a页面就能使用$aaa这个变量呢,我想问的是。如果不用任何模板,我在a页面public一个变量,如何在b页面使用他?? 如果我用aaa;?>这样的方式,是否效率更高? 毕竟模板引擎也是用自己的语言逻辑实现这个过程。。
本人水平不高,想搞清楚这一点,求赐教
------解决方案--------------------
$smarty->assign($aaa,'123');
$smarty->display('a.tlp');
等价于
$a = 234;
?>
...
------解决方案--------------------
我給你一個function你看看或許對你有幫助
<br />/**<br /> 通用範本處理引擎<br /> 參數:<br /> 調用範本並重組預定義的範本變量$Arr,讓每個key成為一個範本變量(key如果是數字將會被unset)<br /> 說明:<br /> 範本檔案名(多個名稱用*分隔),範本變量,是否直接輸出內容,範本路徑<br /> 不直接返回的狀況主要用於返回編譯之後的範本內容,其目的是爲了緩存<br /> 返回:<br /> 如果直接顯示則沒有任何返回值,如果不直接顯示則返回編譯後的範本<br /> 用法:<br /> //自定義範本變體:範本里調用時可用的變量為:$a;$b<br /> $out=Array('a'=>'abc',1=>'fff','b'=>Array('ee'=>'我','是'));<br /><br /> //把前臺的兩個範本編譯之後直接輸出<br /> T('head*index',$out);<br /><br /> //把前臺的範本編譯之後直接輸出<br /> T('test',$out,False);<br /><br /> //把後臺範本編譯之後返回給調用對象<br /> T('test',$out,True,'adm');<br />/**/<br />Function T($Tpl,&$Arr=Array(),$IsShow=True,$Dir='usr') {<br /> IF($Tpl=='') {Return ;}<br /><br /> Foreach($Arr as $k=>$v) {<br /> IF(Is_numeric($k)) {<br /> Unset($Arr[$k]);<br /> IF(SYS_DEBUG) {Error('FT0001',False);}<br /> Continue;<br /> }<br /> $$k=$v;<br /> }Unset($Arr);<br /><br /> IF(!$IsShow) {//如果不允許直接輸出,則開啟緩衝抓取內容<br /> OB_start();OB_clean();<br /> }<br /><br /> $Tpl=Str2Arr($Tpl,'*',True,True,False);<br /> Foreach($Tpl as $k=>$v){<br /> //範本檔案及路徑<br /> $FTpl=SYS_ROOT.$GLOBALS['SYS_TPL'.StrToUpper($Dir).''].$v.'.php';<br /><br /> //範本是否存在<br /> IF(!File_Exists($FTpl)) {Exit('Error:Template '.$FTpl);}<br /><br /> //載入範本<br /> Require($FTpl);<br /> Unset($FTpl);<br /> }Unset($Tpl,$Dir);<br /><br /> IF(!$IsShow) {<br /> $m=Ob_get_contents(); // 取得緩存區內容<br /> OB_end_clean(); // 清理原有內容OB_clean();<br /> OB_end_flush();<br /> Unset($IsShow);<br /> Return $m;<br /> }<br />}
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号