<?php
$test = new A();
class A
{
public function __construct () {
try{
throw new B($this);
}
catch (B $e) {
$e->bar();
}
}
public function foo($arg){
echo "Finally we are in foo(). Message: ".$arg;
}
}
class B extends Exception
{
public $arg;
public function __construct ($arg) {
$this->arg = $arg;
}
public function bar(){
$this->arg->foo("hey");
}
}
PD9waHAKCiR0ZXN0ID0gbmV3IEEoKTsKCiAgICBjbGFzcyBBCiAgICB7CiAgICAgICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0ICgpIHsKICAgICAgICAgICAgdHJ5ewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEIoJHRoaXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoIChCICRlKSB7CiAgICAgICAgICAgICAgICAkZS0+YmFyKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcHVibGljIGZ1bmN0aW9uIGZvbygkYXJnKXsKICAgICAgICAgICAgZWNobyAiRmluYWxseSB3ZSBhcmUgaW4gZm9vKCkuIE1lc3NhZ2U6ICIuJGFyZzsKICAgICAgICB9CiAgICB9CgogICAgY2xhc3MgQiBleHRlbmRzIEV4Y2VwdGlvbgogICAgewogICAgICAgIHB1YmxpYyAkYXJnOwogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCAoJGFyZykgewogICAgICAgICAgICAkdGhpcy0+YXJnID0gJGFyZzsKICAgICAgICB9CiAgICAgICAgcHVibGljIGZ1bmN0aW9uIGJhcigpewogICAgICAgICAgICAkdGhpcy0+YXJnLT5mb28oImhleSIpOwogICAgICAgIH0KICAgIH0=