求php自定义函数达到简化include()函数的目的

<?
//为了做一个类似于include的函数label(),原来需要写include("temple/deafult/label/foot.html"),现在的函数可以写成label("foot")
function label($tpl) {
$templeurl="temple/deafult/";
include ($templeurl.'label/'.$tpl.'.html');
}
?>

原来需要写include("temple/deafult/label/foot.html"),现在的函数可以写成label("foot").
结果我 foot.html确实被include了,但是出现一个问题,但是foot.html语句里如果包含php代码就不被执行。

换成实例:
my.php代码如下
<?
$abc="123";
function label($tpl) {
$templeurl="temple/deafult/";
include ($templeurl.'label/'.$tpl.'.html');
}
include("temple/deafult/label/foot.html");
//label("foot"); //我的问题是要用这个代码替换上面的代码达到完全一样的效果
?>

temple/deafult/label/foot.html代码如下
<html>
<body>
$abc的结果为<? print $abc; ?>
</body>
</html>

其中my.php用注释那里的2个代码显示的效果会不一样,
用label("foot"); 页面只显示“$abc的结果为”
而用include("temple/deafult/label/foot.html");页面显示 “$abc的结果为123”

另外:我上面的代码不考虑语法上小错误,这是根据我需要的一个问题,临时编写出来的代码,只是为了说清楚我现在遇到的问题,可能会有语法小错误,就不要给我指正小错误了。
主要是帮我看看,有没办法通过label("foot");这个自定义的函数包含的页面里的php代码可以执行。
就是说,帮我编写一段代码。设计一个函数,这个函数只需要2个功能
1、调用另外一个页面的代码,如foot.html,就想include一样的效果,但是include(????????)内容太多不方便
2、所调用的页面,里面的php代码可以照样执行,
我找到解决问题的办法了,但是现在又出现了另外一个问题.
就是在my.php中 将$abc作为全局变量,加上global $abc;但是这样以来问题也来了,我现在所需求的变量太多了,难不成加几十个 global $.......

作用域问题。
你在一个function里将另外一个文件include,那么“另一个文件”里的PHP都是在你的function的作用域里执行,你的“另一个文件”里将$abc输出,但在你的function里,并不存在$abc,所以会输出空。

1、你这样做,只是为了少打几个字母,而引来很多问题,如出错率高了,可维护性低了。
2、你确实要省那些代码,你可以这么做:
写一个方法:
function fun1($tpl){
$templeurl="temple/deafult/";
return $templeurl.'label/'.$tpl.'.html';
}

在你的my.php里:
include(fun1('foot'));
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-14
确定里面的php的<?php ?>都是正确的被引用进去了?追问

全部被引用进去了,但是用自定义函数引用的时候php脚本不执行,换回系统自带函数就能执行php脚本

第2个回答  2011-05-14
可以参考一下smarty的传值方式。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网