fork download
  1. <?php
  2.  
  3. // Still works
  4. function invokeWithReference1(StdClass $class)
  5. {
  6. // Create args array using reference
  7. $args = [$class];
  8. $obj = new ReflectionClass('xyz');
  9. return $obj->newInstanceArgs($args);
  10. }
  11.  
  12. // Also still works
  13. function invokeWithReference2()
  14. {
  15. $args = func_get_args();
  16. $obj = new ReflectionClass('xyz');
  17. return $obj->newInstanceArgs($args);
  18. }
  19.  
  20. class xyz
  21. {
  22. public $class;
  23.  
  24. public function __construct(StdClass $class)
  25. {
  26. $this->class = $class;
  27. }
  28.  
  29. public function setTest2()
  30. {
  31. $this->class->test2 = 'goodbye';
  32. }
  33.  
  34. public function setTest3()
  35. {
  36. $this->class->test3 = 'yep';
  37. }
  38. }
  39.  
  40. $class = new StdClass;
  41. $instance1 = invokeWithReference1($class);
  42. $instance2 = invokeWithReference2($class);
  43.  
  44. $class->test = 'hello';
  45. $instance1->setTest2();
  46. $instance2->setTest3();
  47.  
  48. echo $instance1->class->test;
  49. echo PHP_EOL;
  50. echo $instance2->class->test;
  51. echo PHP_EOL;
  52. echo $class->test2;
  53. echo PHP_EOL;
  54. echo $class->test3;
Success #stdin #stdout 0s 82880KB
stdin
Standard input is empty
stdout
hello
hello
goodbye
yep