PHP问题【急】【急】【急】【急】请大神帮忙

WBOY
풀어 주다: 2016-06-23 13:46:22
원래의
870명이 탐색했습니다.

模板赋值问题
最终页代码如下

<?php     require "system/system.php";     $tpl =  new KSeeing();    $tpl->assign("show",'success');    $show = '111';    include('templates/index.html');  =======================这样写的话 $show能成功赋值    //include('F:/AppServ/www/temp/tpl/com_index.html.php');     //$tpl->compile('index.html');===================这样写的话$show不能赋值?>
로그인 후 복사

index.html 简要代码如下 输出一个变量
	<div class="logo"><?php  echo $show ?></div>
로그인 후 복사


问题如下:
直接在本页面下include(上面第一个代码块) include('templates/index.html'); 成功赋值可以输出$show值
简单写了个模板 核心函数 $tpl->compile('index.html'); 如下 就不能成功赋值 相对绝对路径都试过,【以下代码compile已改为绝对】,而且两个引用的路径一模一样[非绝对下]竟然不好使!!!不知道是不是涉及到GLOBAL这个东西,请大神详解 , 在线等!

function compile($fileName){            $ducument_root = $_SERVER['DOCUMENT_ROOT'];            $tplFile = $ducument_root.$this->template_dir.$fileName; //找到模版文件            if(!file_exists($tplFile)){                return false;            }            $comFile = $ducument_root.$this->compile_dir.'com_'.basename($tplFile).'.php';//构造编译后的文件            if(!file_exists($comFile) || filemtime($comFile)<filemtime($tplFile)){                $repContent  = $this->tpl_replace(file_get_contents($tplFile));//获取源文件内容并替换成php源格式                $handle = fopen($comFile,'w+');                fwrite($handle,$repContent);                fclose($handle);            }            include($comFile);        }
로그인 후 복사



回复讨论(解决方案)

你的 KSeeing::assign 方法是怎么写的?

一般的说
$tpl->assign("show",'success');
是将 'success' 赋予 $tpl 的 show 属性,通常会有一个载体
所以可能是这样 $tpl->data['show'] = 'success';

你的模板中是
所以 compile 方法中应是

extract($this->data);include($comFile);
로그인 후 복사
로그인 후 복사
로그인 후 복사

你的 KSeeing::assign 方法是怎么写的?

一般的说
$tpl->assign("show",'success');
是将 'success' 赋予 $tpl 的 show 属性,通常会有一个载体
所以可能是这样 $tpl->data['show'] = 'success';

你的模板中是
所以 compile 方法中应是

extract($this->data);include($comFile);
로그인 후 복사
로그인 후 복사
로그인 후 복사



版主大人 compile这里面有个正则替换 我是故意在终极页面 写个变量$show = '111'; 看看能不能输出 正常的应该是$tpl->assign("show",'success');

function assign($tpl_var,$value = null){
if($tpl_var!=''){
$this->vars[$tpl_var] = $value;
}
}




现在的问题很纠结具体的情况是这样的

这是终极页面
<?php     require "system/system.php";     $tpl =  new KSeeing();    $tpl->assign("show",'success');    //$show = '111';    include('templates/index.html');    //include('F:/AppServ/www/temp/tpl/com_index.html.php');    $tpl->compile('index.html');?>
로그인 후 복사


目前的终极页面可以正常输出success 这是没问题的 然后我稍加修改
<?php     require "system/system.php";     $show = '111';        $tpl->compile('index.html');?>
로그인 후 복사


这样index.html里的$show就没值了,问题来了!!!如果我把$tpl->compile('index.html');改成

include('templates/index.html');就好使了!!而$tpl->compile('index.html');得到的结果也是include('templates/index.html');或者是绝对路径 这样为啥就不好使了呢 目前表面问题看着像页面问题

你的 KSeeing::assign 方法是怎么写的?

一般的说
$tpl->assign("show",'success');
是将 'success' 赋予 $tpl 的 show 属性,通常会有一个载体
所以可能是这样 $tpl->data['show'] = 'success';

你的模板中是
所以 compile 方法中应是

extract($this->data);include($comFile);
로그인 후 복사
로그인 후 복사
로그인 후 복사




===============================================
2楼终极页面有个没注释 修改下
<?php     require "system/system.php";     $tpl =  new KSeeing();    $tpl->assign("show",'success');    //$show = '111';    //include('templates/index.html');    //include('F:/AppServ/www/temp/tpl/com_index.html.php');    $tpl->compile('index.html');?>
로그인 후 복사

所以我要你给出 assign 方法的代码,这样才能有的放矢
你在 compile 中 include 不行的元婴是 compile 中并没有变量 $show

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿