PHPize Online / SQLize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
Copy Clear
Copy Format Clear
<?php class A { private $val; public function __construct($val) { $this->val = $val; } public function getClosure() { // 返回绑定到此对象和作用域的闭包 return function() { return $this->val; }; } } class B { private $val; public function __construct($val) { $this->val = $val; } public function getClosure() { // 返回绑定到此对象和作用域的闭包 return function() { return $this->val; }; } } $c2 = function(){ return $this->val; }; // var_dump($c2()); $ob1 = new A(rand(1,5)); $bcl2 = Closure::bind($c2, $ob1, 'A'); echo $bcl2(), "\n"; $bcl3 = Closure::bind($c2, $ob1, $ob1); echo $bcl3(), "\n"; $bcl4 = Closure::bind($c2, $ob1, A::class); echo $bcl4(), "\n"; echo PHP_EOL.'var_dump($bcl2);'.PHP_EOL; var_dump($bcl2); $bcl5 = Closure::bind($c2, $ob1, 'B'); echo PHP_EOL.'var_dump($bcl5);'.PHP_EOL; var_dump($bcl5); // echo $bcl5(), "\n"; // $bcl6 = Closure::bind($c2, $ob1, $ob1); // echo $bcl6(), "\n"; // $bcl7 = Closure::bind($c2, $ob1, B::class); // echo $bcl7(), "\n"; $cl = $cl->bindTo($ob1); echo $cl(), "\n"; ?>
Show:  
Copy Clear