public function closure() { return \Lead\Filter\Filters::run(isset($this) ? $this : get_called_class(), __FUNCTION__, func_get_args(), function ($next) { return function () { $rand = rand(2, 5); $rand++; return $rand; }; }); }
return Filters::run(get_called_class(), 'filterable', func_get_args(), function ($next, $message) { return "Hello {$message}"; }); }); Filters::apply($class, 'filterable', $this->filter1); Filters::apply($subclass, 'filterable', $this->filter2); expect($subclass::filterable('World!'))->toBe('21Hello World!12'); Filters::apply($subclass, 'filterable', $this->noChain); expect($subclass::filterable('World!'))->toBe("Hello"); }); it("applies filters in order", function () { $class = $this->class; $subclass = Double::classname(['extends' => $class]); allow($subclass)->toReceive('::filterable')->andRun(function () { return Filters::run(get_called_class(), 'filterable', func_get_args(), function ($next, $message) { return "Hello {$message}"; }); }); Filters::apply($subclass, 'filterable', $this->filter1); Filters::apply($subclass, 'filterable', $this->filter2); expect($subclass::filterable('World!'))->toBe('21Hello World!12'); }); }); describe("::get()", function () { it("exports filters setted as a class level", function () { Filters::apply($this->class, 'filterable', $this->filter1); $filters = Filters::get(); expect($filters)->toHaveLength(1); expect(isset($filters[$this->class . '::filterable']))->toBe(true); }); });
public function filterable() { return Filters::run($this, 'filterable', func_get_args(), function ($next, $message) { return "Hello {$message}"; }); }