<?php
class A1 {
function __call($name, $arguments) {
throw new \Exception('Method ..... ' . $name . ' not exists ...');
}
/* When this method is public - it works good*/
private function test($d) {
}
public function test1() {
/* create anonym func, wherein the method is called test() */
$rrr= function($this){
$this->test(1);
};
$rrr(); # catch Exception of __call() ...
}
}
$r = new A1;
$r->test1();
PD9waHAKCmNsYXNzIEExIHsKICAgIGZ1bmN0aW9uIF9fY2FsbCgkbmFtZSwgJGFyZ3VtZW50cykgICAgewogICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdNZXRob2QgLi4uLi4gJyAuICRuYW1lIC4gJyBub3QgZXhpc3RzIC4uLicpOwogICAgfQoKICAgIC8qIFdoZW4gdGhpcyBtZXRob2QgaXMgcHVibGljIC0gaXQgd29ya3MgZ29vZCovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHRlc3QoJGQpIHsKICAgICAgICB2YXJfZHVtcCgkZCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3QxKCkgewogICAgICAgIC8qIGNyZWF0ZSBhbm9ueW0gZnVuYywgd2hlcmVpbiB0aGUgbWV0aG9kIGlzIGNhbGxlZCB0ZXN0KCkgKi8KICAgICAgICAkcnJyPSBmdW5jdGlvbigkdGhpcyl7CiAgICAgICAgICAgICR0aGlzLT50ZXN0KDEpOwogICAgICAgIH07CiAgICAgICAgJHJycigpOyAgIyBjYXRjaCBFeGNlcHRpb24gb2YgX19jYWxsKCkgLi4uCiAgICB9Cn0KCiRyID0gbmV3IEExOwokci0+dGVzdDEoKTsK