从当前函数取消设置所有已定义的变量

Ale*_*lex 3 php variables function unset

例如,我有这个功能:

function foo($whaaaat){

  $var1 = 'a';  
  $a = 1;
  $b = 2;

  ...


  // here unset all variables defined above (including arguments) 
  require 'somefile.php';
}
Run Code Online (Sandbox Code Playgroud)

那么,我可以在需求点之前取消设置所有这些变量吗?

显然没有在每个变量上手动调用unset,因为我想出了自己:)

是否有一些功能可以做到这一点?

phi*_*hag 8

你可以包装require在一个匿名函数:

function foo($a){
  $b = 2;

  call_user_func(function() {
   require 'somefile.php';
  });
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*c B 7

假设这些函数内变量都没有被声明为全局变量,你可以尝试类似的东西

array_diff(get_defined_vars(), $GLOBALS)
Run Code Online (Sandbox Code Playgroud)

获取局部变量的列表,然后循环结果以取消设置它们.