【发布时间】:2016-09-05 11:10:10
【问题描述】:
在类方法的定义中,我包含了一个外部文件。我希望这个外部文件无法访问$this,而只能访问“公共”实例,即只有公共方法和属性。
到目前为止,我已经尝试使用匿名函数 call_user_func 和返回 $this 的方法。
我已经看到我可以在我的匿名函数中取消设置 $this 而不会改变其余的执行,但我还没有找到一种方法来获取我想要的实例。我想我可以尝试取消设置匿名函数中的所有非公共属性和方法,但我想知道是否没有更简单的方法。
Class Foo{
private $test = 23;
public function getFoo(){
return $this;
}
public function inclFile($file){
$foo = call_user_func([$this, 'getFoo']);
$r = function()use($foo){
unset($this);
var_dump($foo->test); // i am getting it!
require($file);
};
$r();
// Here $this is still set
}
}
【问题讨论】: