Code Duplication    Length = 34-34 lines in 2 locations

src/Callbacks/CallbackVisitor.php 1 location

@@ 83-116 (lines=34) @@
80
     *
81
     * @return void
82
     */
83
    protected function prepareCallbacks(SubjectInterface $subject, array $callbacks, $type = null)
84
    {
85
86
        // iterate over the array with callbacks and prepare them
87
        foreach ($callbacks as $key => $callback) {
88
            // we have to initialize the type only on the first level
89
            if ($type == null) {
90
                $type = $key;
91
            }
92
93
            // query whether or not we've an subarry or not
94
            if (is_array($callback)) {
95
                $this->prepareCallbacks($subject, $callback, $type);
96
            } else {
97
                // create the instance of the callback/factory
98
                $instance = $this->container->get($callback);
99
                // query whether or not a factory has been specified
100
                if ($instance instanceof CallbackFactoryInterface) {
101
                    $subject->registerCallback($instance->createCallback($subject), $type);
102
                } elseif ($instance instanceof CallbackInterface) {
103
                    $subject->registerCallback($instance, $type);
104
                } else {
105
                    throw new \InvalidArgumentException(
106
                        sprintf(
107
                            'Instance of "%s" doesn\'t implement interface "%s" or "%s"',
108
                            $callback,
109
                            CallbackFactoryInterface::class,
110
                            CallbackInterface::class
111
                        )
112
                    );
113
                }
114
            }
115
        }
116
    }
117
}
118

src/Observers/ObserverVisitor.php 1 location

@@ 83-116 (lines=34) @@
80
     *
81
     * @return void
82
     */
83
    protected function prepareObservers(SubjectInterface $subject, array $observers, $type = null)
84
    {
85
86
        // iterate over the array with observers and prepare them
87
        foreach ($observers as $key => $observer) {
88
            // we have to initialize the type only on the first level
89
            if ($type == null) {
90
                $type = $key;
91
            }
92
93
            // query whether or not we've an subarry or not
94
            if (is_array($observer)) {
95
                $this->prepareObservers($subject, $observer, $type);
96
            } else {
97
                // create the instance of the observer/factory
98
                $instance = $this->container->get($observer);
99
                // query whether or not a factory has been specified
100
                if ($instance instanceof ObserverFactoryInterface) {
101
                    $subject->registerObserver($instance->createObserver($subject), $type);
102
                } elseif ($instance instanceof ObserverInterface) {
103
                    $subject->registerObserver($instance, $type);
104
                } else {
105
                    throw new \InvalidArgumentException(
106
                        sprintf(
107
                            'Instance of "%s" doesn\'t implement interface "%s" or "%s"',
108
                            $observer,
109
                            ObserverFactoryInterface::class,
110
                            ObserverInterface::class
111
                        )
112
                    );
113
                }
114
            }
115
        }
116
    }
117
}
118