Passed
Push — master ( 7a440c...724ebd )
by Marcin
10:28 queued 11s
created

ResponseBuilderServiceProvider::mergeConfig()   A

Complexity

Conditions 5
Paths 5

Size

Total Lines 17
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 5

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 10
c 1
b 0
f 0
nc 5
nop 2
dl 0
loc 17
ccs 11
cts 11
cp 1
crap 5
rs 9.6111
1
<?php
2
/**
3
 * Disable return type hint inspection as we do not have it specified in that
4
 * class for a purpose. The base class is also not having return type hints.
5
 *
6
 * @noinspection ReturnTypeCanBeDeclaredInspection
7
 */
8
9
declare(strict_types=1);
10
11
namespace MarcinOrlowski\ResponseBuilder;
12
13
/**
14
 * Laravel API Response Builder
15
 *
16
 * @package   MarcinOrlowski\ResponseBuilder
17
 *
18
 * @author    Marcin Orlowski <mail (#) marcinOrlowski (.) com>
19
 * @copyright 2016-2019 Marcin Orlowski
20
 * @license   http://www.opensource.org/licenses/mit-license.php MIT
21
 * @link      https://github.com/MarcinOrlowski/laravel-api-response-builder
22
 */
23
24
use Illuminate\Support\ServiceProvider;
25
26
class ResponseBuilderServiceProvider extends ServiceProvider
27
{
28
    /**
29
     * Register bindings in the container.
30
     *
31
     * @return void
32
     */
33
    public function register()
34
    {
35
        $this->mergeConfigFrom(
36
            __DIR__ . '/../config/response_builder.php', 'response_builder'
37
        );
38
    }
39
40
    /**
41
     * Sets up package resources
42
     *
43
     * @return void
44
     */
45 77
    public function boot()
46
    {
47 77
        $this->loadTranslationsFrom(__DIR__ . '/lang', 'response-builder');
48
49 77
        $source = __DIR__ . '/../config/response_builder.php';
50 77
        $this->publishes([
51 77
            $source => config_path('response_builder.php'),
52
        ]);
53 77
    }
54
55
    /**
56
     * Merge the given configuration with the existing configuration.
57
     *
58
     * @param string $path
59
     * @param string $key
60
     *
61
     * @return void
62
     */
63
    protected function mergeConfigFrom($path, $key)
64
    {
65
        $defaults = require $path;
66
        $config = $this->app['config']->get($key, []);
67
68 77
        $merged_config = Util::mergeConfig($defaults, $config);
69
        Util::sortArrayByPri($merged_config['classes']);
70 77
71 77
        $this->app['config']->set($key, $merged_config);
72 77
    }
73
74
}
75