Passed
Push — main ( da6fcc...bd4e0a )
by Dimitri
03:54
created

Facade::__call()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 2
dl 0
loc 3
ccs 1
cts 1
cp 1
crap 1
rs 10
1
<?php
2
3
/**
4
 * This file is part of Blitz PHP framework.
5
 *
6
 * (c) 2022 Dimitri Sitchet Tomkeu <[email protected]>
7
 *
8
 * For the full copyright and license information, please view
9
 * the LICENSE file that was distributed with this source code.
10
 */
11
12
namespace BlitzPHP\Facades;
13
14
use InvalidArgumentException;
15
16
abstract class Facade
17
{
18
    abstract protected static function accessor(): object|string;
19
20
    public static function __callStatic(string $name, array $arguments = [])
21
    {
22
        if (is_string($accessor = static::accessor())) {
23 2
            $accessor = service($accessor);
24
        }
25
26
        if (! is_object($accessor)) {
27 2
            throw new InvalidArgumentException(sprintf('La methode `%s::accessor` doit retourner un object ou le nom d\'un service.', static::class));
28
        }
29
30 14
        return $accessor->{$name}(...$arguments);
31
    }
32
33
    public function __call(string $name, array $arguments = [])
34
    {
35 2
        return static::__callStatic($name, $arguments);
36
    }
37
}
38