<?php
trait Test{
public function testtreit(){
return 'Это трейт !';
}
}
class MyProxy {
protected $_object = null;
protected $_methods = array();
public function __construct($object) {
if (!is_object($object)) {
throw new InvalidArgumentException('$object must be an object');
}
$this->_object = $object;
}
public function __call($name, $arguments) {
return $this->callMethod($name, $arguments);
}
public function setMethod($name, Closure $method) {
$this->_methods[(string) $key] = $method;
}
public function callMethod($name, array $arguments) {
if (isset($this->_methods[$name])) {
return call_user_func_array($this->_methods[$name], $arguments);
}
return call_user_func_array(array($this->_object, $name), $arguments);
}
}
$ar = new MyProxy();
$ar->setMethod('testtreit');
?>
Fatal error: Uncaught ArgumentCountError: Too few arguments to function MyProxy::__construct(), 0 passed in /in/vr5YL on line 37 and exactly 1 expected in /in/vr5YL:13
Stack trace:
#0 /in/vr5YL(37): MyProxy->__construct()
#1 {main}
thrown in /in/vr5YL on line 13
Process exited with code 255.
Output for 7.0.0 - 7.0.33
Warning: Missing argument 1 for MyProxy::__construct(), called in /in/vr5YL on line 37 and defined in /in/vr5YL on line 13
Notice: Undefined variable: object in /in/vr5YL on line 14
Fatal error: Uncaught InvalidArgumentException: $object must be an object in /in/vr5YL:15
Stack trace:
#0 /in/vr5YL(37): MyProxy->__construct()
#1 {main}
thrown in /in/vr5YL on line 15
Process exited with code 255.
Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.40
Warning: Missing argument 1 for MyProxy::__construct(), called in /in/vr5YL on line 37 and defined in /in/vr5YL on line 13
Notice: Undefined variable: object in /in/vr5YL on line 14
Fatal error: Uncaught exception 'InvalidArgumentException' with message '$object must be an object' in /in/vr5YL:15
Stack trace:
#0 /in/vr5YL(37): MyProxy->__construct()
#1 {main}
thrown in /in/vr5YL on line 15
Process exited with code 255.