Completed
Push — master ( 559961...743237 )
by Mike
10:12 queued 07:50
created

Service   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 30
rs 10
c 0
b 0
f 0
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A registerBladeDirective() 0 12 3
A boot() 0 6 1
A provides() 0 3 1
1
<?php namespace GeneaLabs\LaravelAuthorizationAddons\Providers;
2
3
use Blade;
4
use Exception;
5
use GeneaLabs\LaravelAuthorizationAddons\AuthorizationAddOns;
6
use Illuminate\Support\ServiceProvider;
7
8
class Service extends ServiceProvider
9
{
10
    protected $defer = false;
11
12
    protected function registerBladeDirective(string $directive, string $alias = null)
13
    {
14
        $directive = $alias ?: $directive;
15
16
        if (array_key_exists($directive, Blade::getCustomDirectives())) {
17
            throw new Exception("Blade directive '{$directive}' is already registered.");
18
        }
19
20
        app('blade.compiler')->directive($directive, function ($parameters) use ($directive) {
21
            $parameters = trim($parameters, "()");
22
23
            return (new AuthorizationAddOns)->{$directive}($parameters);
24
        });
25
    }
26
27
    public function boot()
28
    {
29
        $this->registerBladeDirective('canAny');
30
        $this->registerBladeDirective('canEvery');
31
        $this->registerBladeDirective('elseCanAny');
32
        $this->registerBladeDirective('elseCanEvery');
33
    }
34
35
    public function provides() : array
36
    {
37
        return ['genealabs-laravel-authorization-addons'];
38
    }
39
}
40