<?php
class QueryHandler {
public $input;
public function render(Closure $query){
$this->input = "test";
$query();
}
}
class MyQuery{
public $handler;
public function __construct(){
$this->handler = new QueryHandler;
}
public function query(){
return function () {
echo $this->handler->input;
};
}
public function render(Closure $query){
$this->handler($query);
}
}
echo "start"."\n";
$myQuery = new MyQuery;
$myQuery->render();
start
Fatal error: Uncaught ArgumentCountError: Too few arguments to function MyQuery::render(), 0 passed in /in/ZJRvG on line 43 and exactly 1 expected in /in/ZJRvG:34
Stack trace:
#0 /in/ZJRvG(43): MyQuery->render()
#1 {main}
thrown in /in/ZJRvG on line 34
Process exited with code 255.
Output for 7.0.0 - 7.0.20
start
Fatal error: Uncaught TypeError: Argument 1 passed to MyQuery::render() must be an instance of Closure, none given, called in /in/ZJRvG on line 43 and defined in /in/ZJRvG:34
Stack trace:
#0 /in/ZJRvG(43): MyQuery->render()
#1 {main}
thrown in /in/ZJRvG on line 34
Process exited with code 255.
start
Catchable fatal error: Argument 1 passed to MyQuery::render() must be an instance of Closure, none given, called in /in/ZJRvG on line 43 and defined in /in/ZJRvG on line 34
Process exited with code 255.