- var_dump: documentation ( source)
- array_reduce: documentation ( source)
<?php
class Chain {
private $values = [];
public function __construct($x) {
$this->values[] = $x;
}
public function __invoke($x) {
if ($x instanceof Closure) {
return array_reduce($this->values, $x);
}
$this->values[] = $x;
return $this;
}
}
var_dump((new Chain(1))(2)(3)(function ($x, $y) { return $x + $y; }));