TransmitServiceProvider::setDefaultSerializer()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 2
1
<?php
2
3
namespace NavJobs\Transmit;
4
5
use Illuminate\Support\ServiceProvider;
6
use League\Fractal\Manager;
7
use League\Fractal\Serializer\SerializerAbstract;
8
use NavJobs\Transmit\Serializers\DataArraySerializer;
9
10
class TransmitServiceProvider extends ServiceProvider
11
{
12
    /**
13
     * Bootstrap the application services.
14
     */
15
    public function boot()
16
    {
17
        $this->publishes([
18
            __DIR__.'/../resources/config/transmit.php' => config_path('transmit.php'),
19
        ], 'config');
20
    }
21
22
    /**
23
     * Register the application services.
24
     */
25
    public function register()
26
    {
27
        $this->mergeConfigFrom(__DIR__.'/../resources/config/transmit.php', 'transmit');
28
29
        $this->app->bind(Fractal::class, function () {
30
31
            $manager = new Manager();
32
33
            $fractal = new Fractal($manager);
34
35
            $config = $this->app['config']->get('transmit');
36
37
            if (!empty($config['default_serializer'])) {
38
                $fractal = $this->setDefaultSerializer($fractal, $config['default_serializer']);
39
            } else {
40
                $fractal->serializeWith(new DataArraySerializer());
41
            }
42
43
            return $fractal;
44
        });
45
    }
46
47
    /**
48
     * Set the default serializer.
49
     *
50
     * @param $fractal
51
     * @param string|\League\Fractal\Serializer\SerializerAbstract $serializer
52
     *
53
     * @return mixed
54
     */
55
    protected function setDefaultSerializer($fractal, $serializer)
56
    {
57
        if ($serializer instanceof SerializerAbstract) {
58
            return $fractal->serializeWith($serializer);
59
        }
60
61
        return $fractal->serializeWith(new $serializer());
62
    }
63
}
64