1: | <?php declare(strict_types=1); |
2: | |
3: | namespace Salient\Contract\Core; |
4: | |
5: | /** |
6: | * @api |
7: | */ |
8: | interface Chainable |
9: | { |
10: | /** |
11: | * Move to the next method in the chain after applying a callback to the |
12: | * object |
13: | * |
14: | * @param callable(static): static $callback |
15: | * @return static |
16: | */ |
17: | public function apply(callable $callback); |
18: | |
19: | /** |
20: | * Move to the next method in the chain after applying a conditional |
21: | * callback to the object |
22: | * |
23: | * @param (callable(static): bool)|bool $condition |
24: | * @param (callable(static): static)|null $then Called if `$condition` |
25: | * resolves to `true`. |
26: | * @param (callable(static): static)|null $else Called if `$condition` |
27: | * resolves to `false`. |
28: | * @return static |
29: | */ |
30: | public function if($condition, ?callable $then = null, ?callable $else = null); |
31: | |
32: | /** |
33: | * Move to the next method in the chain after applying a callback to the |
34: | * object with each item in a list |
35: | * |
36: | * @template TKey |
37: | * @template TValue |
38: | * |
39: | * @param iterable<TKey,TValue> $list |
40: | * @param callable(static, TValue, TKey): static $callback |
41: | * @return static |
42: | */ |
43: | public function withEach(iterable $list, callable $callback); |
44: | } |
45: |