1 | <?php |
||
20 | class ParentsRecursiveService implements SingletonInterface |
||
21 | { |
||
22 | /** |
||
23 | * @var ParentsRecursiveService |
||
24 | */ |
||
25 | private static $instance; |
||
26 | |||
27 | /** |
||
28 | * @var callable |
||
29 | */ |
||
30 | protected $callback; |
||
31 | |||
32 | /** |
||
33 | * @var object[] |
||
34 | */ |
||
35 | protected $processedParents = []; |
||
36 | |||
37 | /** |
||
38 | * @return ParentsRecursiveService |
||
39 | */ |
||
40 | public static function get() |
||
48 | |||
49 | /** |
||
50 | * Will loop along each parent of the given root object, and every parent of |
||
51 | * the parents: the given callback is called with a single parameter which |
||
52 | * is the current parent. |
||
53 | * |
||
54 | * When the callback returns `false`, the loop breaks. |
||
55 | * |
||
56 | * @param callable $callback |
||
57 | * @param ParentsTrait $rootObject |
||
|
|||
58 | * @param object[] $parents |
||
59 | */ |
||
60 | public function alongParents(callable $callback, $rootObject, array $parents) |
||
78 | |||
79 | /** |
||
80 | * @param callable $callback |
||
81 | * @param array $parents |
||
82 | */ |
||
83 | protected function alongParentsInternal(callable $callback, array $parents) |
||
102 | |||
103 | /** |
||
104 | * @param object $parent |
||
105 | * @return bool |
||
106 | */ |
||
107 | protected function parentWasProcessed($parent) |
||
117 | } |
||
118 |