【发布时间】:2013-08-04 22:55:53
【问题描述】:
这是一个非常简单的设置示例:
包括/form.php
$secret_var = 'Mind blowing secret';
return '<form></form>';
page.php
echo include('includes/form.php'); // Notice the unusual way of including
echo $secret_var;
结果
<form></form>
Mind blowing secret
如你所见,我不会返回 $secret_var,但它仍然暴露在外!
为该 includes/form.php 中的所有变量创建范围的最有效方法是什么,以便 PHP 自动取消设置它们?
当然我知道我可以运行unset($secret_var);,但是有很多表单,每个变量都有很多变量,并且不同的开发人员会不断地更改它们。从长远来看,这种方法基本上意味着 100% 的机会出现错误。我需要以某种方式自动完成(如函数中的变量),但在这种情况下不使用命名函数(一个文件可能包含多次)。保持 page.php 内的代码不变也是最高优先级,因为这将意味着系统范围内的大量更改。
也许我可以使用匿名函数之类的?最好不要损害性能...
【问题讨论】:
-
那么不要这样
include;-) 为什么这显然不是一个选项? -
+1 to delnan - 我很困惑为什么一个正常的形式是禁忌!
-
这样做是为了返回生成的 HTML,而不是直接回显它或在每个 form.php 中创建一个新变量。因为有时重用的表单首先与其他 HTML 合并,然后才回显。我希望我很清楚..