<?php
function invokeWithReference(StdClass &$class)
{
// Create args array using reference
$args = [$class];
$obj = new ReflectionClass('xyz');
return $obj->newInstanceArgs($args);
}
class xyz
{
public $class;
public function __construct(StdClass $class)
{
$this->class = $class;
}
public function setTest2()
{
$this->class->test2 = 'goodbye';
}
}
$class = new StdClass;
$instance = invokeWithReference($class);
$class->test = 'hello';
$instance->setTest2();
echo $instance->class->test;
echo PHP_EOL;
echo $class->test2;
PD9waHAKCmZ1bmN0aW9uIGludm9rZVdpdGhSZWZlcmVuY2UoU3RkQ2xhc3MgJiRjbGFzcykKewogICAgLy8gQ3JlYXRlIGFyZ3MgYXJyYXkgdXNpbmcgcmVmZXJlbmNlCiAgICAkYXJncyA9IFskY2xhc3NdOwogICAgJG9iaiA9IG5ldyBSZWZsZWN0aW9uQ2xhc3MoJ3h5eicpOwogICAgcmV0dXJuICRvYmotPm5ld0luc3RhbmNlQXJncygkYXJncyk7Cn0KCmNsYXNzIHh5egp7CiAgICBwdWJsaWMgJGNsYXNzOwogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoU3RkQ2xhc3MgJGNsYXNzKQogICAgewogICAgICAgICR0aGlzLT5jbGFzcyA9ICRjbGFzczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VGVzdDIoKQogICAgewogICAgICAgICR0aGlzLT5jbGFzcy0+dGVzdDIgPSAnZ29vZGJ5ZSc7CiAgICB9Cn0KCiRjbGFzcyA9IG5ldyBTdGRDbGFzczsKJGluc3RhbmNlID0gaW52b2tlV2l0aFJlZmVyZW5jZSgkY2xhc3MpOwoKJGNsYXNzLT50ZXN0ID0gJ2hlbGxvJzsKJGluc3RhbmNlLT5zZXRUZXN0MigpOwoKZWNobyAkaW5zdGFuY2UtPmNsYXNzLT50ZXN0OwplY2hvIFBIUF9FT0w7CmVjaG8gJGNsYXNzLT50ZXN0Mjs=