- var_dump: documentation ( source)
- in_array: documentation ( source)
<?php
class Foo
{
public function bar()
{
var_dump(__METHOD__);
}
public function baz()
{
var_dump(__METHOD__);
}
public function bat()
{
var_dump(__METHOD__);
return 'bat!';
}
}
class FluentWrapper
{
private $instance;
private $fluentMethods;
public function __construct($instance, array $fluentMethods = [])
{
$this->instance = $instance;
$this->fluentMethods = $fluentMethods;
}
public function __call($name, $args)
{
$result = $this->instance->{$name}(...$args);
return in_array($name, $this->fluentMethods) ? $this : $result;
}
}
$foo = new FluentWrapper(new Foo(), ['bar', 'baz']);
$bat = $foo
->bar()
->baz()
->bar()
->baz()
->bat();
print $bat."\n";