3

这是一个非常简化的设置示例:

包括/form.php

$secret_var = 'Mind blowing secret';
return '<form></form>';

页面.php

echo include('includes/form.php'); // Notice the unusual way of including
echo $secret_var;

结果

<form></form>
Mind blowing secret

如您所见,我不回来$secret_var了,但它仍然暴露在外!

为include/form.php中的所有变量创建范围的最有效方法是什么,以便 PHP 自动取消设置它们?

当然我知道我可以运行unset($secret_var);,但是有很多形式,每个变量都有很多变量,不同的开发人员不断地改变它们。从长远来看,这种方法基本上意味着 100% 的机会出现错误。我需要以某种方式自动完成(如函数中的变量),但在这种情况下不使用命名函数(一个文件可能包含多次)。将page.php中的代码保持不变也是最高优先级,因为这将意味着系统范围内的大量更改。

也许我可以使用匿名函数之类的?最好不要损害性能...

4

1 回答 1

2

代替

echo include('includes/form.php'); // Notice the unusual way of including
echo $secret_var;

利用

echo call_user_func(function(){
    // secret var's scope is only valid in this block...
    // while the return '<form></form>'; is... returned.
    include('includes/form.php');
});
echo $secret_var;

看看情况如何。

PS不要echo include。这意味着echo bool;,而不是它的回报。

PPS而且你没有正确使用包含,因为它们的意思是......但我什至不会从那个开始。

于 2013-08-03T22:20:10.497 回答