Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
DeferredInsertLifecycleHandler
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 6
42
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 onAfterInsert
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
 onAfterUpdate
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 onAfterRemove
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 onAfterLoad
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 onAfterClear
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Flow\Data\Listener;
4
5use Flow\Data\LifecycleHandler;
6use SplQueue;
7
8class DeferredInsertLifecycleHandler implements LifecycleHandler {
9    /**
10     * @var SplQueue
11     */
12    protected $queue;
13
14    /**
15     * @var LifecycleHandler
16     */
17    protected $nested;
18
19    /**
20     * @param SplQueue $queue
21     * @param LifecycleHandler $nested
22     */
23    public function __construct( SplQueue $queue, LifecycleHandler $nested ) {
24        $this->queue = $queue;
25        $this->nested = $nested;
26    }
27
28    /**
29     * @param object $object
30     * @param array $new
31     * @param array $metadata
32     */
33    public function onAfterInsert( $object, array $new, array $metadata ) {
34        $nested = $this->nested;
35        $this->queue->enqueue( static function () use ( $nested, $object, $new, $metadata ) {
36            $nested->onAfterInsert( $object, $new, $metadata );
37        } );
38    }
39
40    /**
41     * @param object $object
42     * @param array $old
43     * @param array $new
44     * @param array $metadata
45     */
46    public function onAfterUpdate( $object, array $old, array $new, array $metadata ) {
47        $this->nested->onAfterUpdate( $object, $old, $new, $metadata );
48    }
49
50    /**
51     * @param object $object
52     * @param array $old
53     * @param array $metadata
54     */
55    public function onAfterRemove( $object, array $old, array $metadata ) {
56        $this->nested->onAfterRemove( $object, $old, $metadata );
57    }
58
59    /**
60     * @param object $object
61     * @param array $old
62     */
63    public function onAfterLoad( $object, array $old ) {
64        $this->nested->onAfterLoad( $object, $old );
65    }
66
67    public function onAfterClear() {
68        // Not clearing $this->queue, this is not data but actual code
69        // that needs to be run.
70    }
71}