DelayedServiceProvider   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 19
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 19
rs 10
c 0
b 0
f 0
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A provides() 0 2 1
A getProvidedClasses() 0 6 2
1
<?php
2
3
namespace PHPKitchen\DI;
4
5
/**
6
 * Base class for service providers that should be delayed to register till services are
7
 * actually required.
8
 *
9
 * @property array $providedClasses private alias of {@link _providedClasses}
10
 *
11
 * @package PHPKitchen\DI
12
 */
13
abstract class DelayedServiceProvider extends ServiceProvider implements Contracts\DelayedServiceProvider {
14
    private $_providedClasses;
15
16
    /**
17
     *
18
     * @return array list of classes provided
19
     */
20
    abstract protected function listProvidedClasses();
21
22
    public function provides($classOrInterface) {
23
        return in_array($classOrInterface, $this->providedClasses);
24
    }
25
26
    protected function getProvidedClasses() {
27
        if (null === $this->_providedClasses) {
28
            $this->_providedClasses = $this->listProvidedClasses();
29
        }
30
31
        return $this->_providedClasses;
32
    }
33
}