closure_036.phpt 475 B

123456789101112131415161718192021222324252627282930313233
  1. --TEST--
  2. Closure 036: Rebinding closures, keep calling scope
  3. --FILE--
  4. <?php
  5. class A {
  6. private $x;
  7. public function __construct($v) {
  8. $this->x = $v;
  9. }
  10. public function getIncrementor() {
  11. return function() { return ++$this->x; };
  12. }
  13. }
  14. $a = new A(0);
  15. $b = new A(10);
  16. $ca = $a->getIncrementor();
  17. $cb = $ca->bindTo($b);
  18. $cb2 = Closure::bind($ca, $b);
  19. var_dump($ca());
  20. var_dump($cb());
  21. var_dump($cb2());
  22. ?>
  23. --EXPECT--
  24. int(1)
  25. int(11)
  26. int(12)