<?php
class A
{
private $_a;
private $_b;
public function __construct($a = null, $b = null)
{
$this->_a = $a;
$this->_b = $b;
echo 'Constructed A instance with args: ' . $a . ', ' . $b . "\n";
}
public function construct_from_this()
{
$ref = new ReflectionClass($this);
return $ref->newInstance('a_value', 'b_value');
}
}
$foo = new A();
$result = $foo->construct_from_this();
PD9waHAKCmNsYXNzIEEKewogICAgcHJpdmF0ZSAkX2E7CiAgICBwcml2YXRlICRfYjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGEgPSBudWxsLCAkYiA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9hID0gJGE7CiAgICAgICAgJHRoaXMtPl9iID0gJGI7CiAgICAgICAgCiAgICAgICAgZWNobyAnQ29uc3RydWN0ZWQgQSBpbnN0YW5jZSB3aXRoIGFyZ3M6ICcgLiAkYSAuICcsICcgLiAkYiAuICJcbiI7CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBjb25zdHJ1Y3RfZnJvbV90aGlzKCkKICAgIHsKICAgICAgICAkcmVmID0gbmV3IFJlZmxlY3Rpb25DbGFzcygkdGhpcyk7CiAgICAgICAgcmV0dXJuICRyZWYtPm5ld0luc3RhbmNlKCdhX3ZhbHVlJywgJ2JfdmFsdWUnKTsKICAgIH0KfQoKJGZvbyA9IG5ldyBBKCk7CiRyZXN1bHQgPSAkZm9vLT5jb25zdHJ1Y3RfZnJvbV90aGlzKCk7