讨论下PHP的变量注册以及使用。
先从smarty模板说起,众所周知如果用这个东东注册一个变量$smarty->assign($aaa,'123');
$smarty->display('a.tlp');
那么a页面就能使用$aaa这个变量呢,我想问的是。如果不用任何模板,我在a页面public一个变量,如何在b页面使用他?? 如果我用<?php $this->aaa;?>这样的方式,是否效率更高? 毕竟模板引擎也是用自己的语言逻辑实现这个过程。。
本人水平不高,想搞清楚这一点,求赐教
[解决办法]
$smarty->assign($aaa,'123');
$smarty->display('a.tlp');
等价于
$a = 234;
?>
...
<?php echo $a ?>
[解决办法]
我你一function你看看或你有助
/**
通用本理引擎
:
用本重定的本量$Arr,每key成一本量(key如果是字被unset)
明:
本案名(多名用*分隔),本量,是否直接出容,本路
不直接返回的主要用於返回之後的本容,其目的是了存
返回:
如果直接示有任何返回值,如果不直接示返回後的本
用法:
//自定本:本里用可用的量:$a;$b
$out=Array('a'=>'abc',1=>'fff','b'=>Array('ee'=>'我','是'));
//把前的本之後直接出
T('head*index',$out);
//把前的本之後直接出
T('test',$out,False);
//把後本之後返回用象
T('test',$out,True,'adm');
/**/
Function T($Tpl,&$Arr=Array(),$IsShow=True,$Dir='usr') {
IF($Tpl=='') {Return ;}
Foreach($Arr as $k=>$v) {
IF(Is_numeric($k)) {
Unset($Arr[$k]);
IF(SYS_DEBUG) {Error('FT0001',False);}
Continue;
}
$$k=$v;
}Unset($Arr);
IF(!$IsShow) {//如果不允直接出,抓取容
OB_start();OB_clean();
}
$Tpl=Str2Arr($Tpl,'*',True,True,False);
Foreach($Tpl as $k=>$v){
//本案及路
$FTpl=SYS_ROOT.$GLOBALS['SYS_TPL'.StrToUpper($Dir).''].$v.'.php';
//本是否存在
IF(!File_Exists($FTpl)) {Exit('Error:Template '.$FTpl);}
//入本
Require($FTpl);
Unset($FTpl);
}Unset($Tpl,$Dir);
IF(!$IsShow) {
$m=Ob_get_contents();// 取得存容
OB_end_clean();// 清理原有容OB_clean();
OB_end_flush();
Unset($IsShow);
Return $m;
}
}