#注册:自动加载函数Class::function
spl_autoload_register(array('class', 'function'), true, true);
#取消注册:自动加载函数Class::function
spl_autoload_unregister(array('class','function'));
# 回调函数call_user_func('function','param1','param2',....);
echo "结果:";
call_user_func(function($a,$b,$c){
echo $a;
echo $b;
echo $c;
},'a','b','c');
=> 结果:abc
#解释:\Closure::bind('匿名函数','所属实例对象[匿名函数内部的$this]','作用域[就是该函数在类内部]')
class B{
private $v = 0; #私有变量
}
//------------------------------------
#匿名函数
$func = function(){
$this->v = 1; #操作私有变量
};
$mB = new B();
\Closure::bind($func,$mB,B::class)();
#返回:匿名函数,调用方式
\Closure::bind()();
call_user_func(\Closure::bind());
#解释:实例对象能在类内部修改私有变量
class B{
private $v = 0;
public function set($mB){
$mB->v = 1;
}
}
$mB = new B();
$mB->set($mB);
print_r($mB);#这里是能修改v的
#解释:\Closure::bind('匿名函数',null,'作用域[就是该函数在类内部]')
class A{
}
class B{
private $v = 0; #私有变量
}
//------------------------------------
//实例对象
$mB = new B();
#匿名函数
$func = function()use($mB){
//$this->v = 1; #由于'所属实例对象'为 null $this将不能用
$mB->v = 1; #这里$mB就相当于在B内部操作变量
};
\Closure::bind($func,null,B::class)();
#-------------------------------------------------------------------------
\Closure::bind($func,null,A::class)(); #这里就会报错,说B::$v私有无权访问