DefaultApie::createDefaultApie()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 9
nc 4
nop 4
dl 0
loc 12
rs 9.9666
c 1
b 0
f 0
1
<?php
2
3
namespace W2w\Lib\Apie;
4
5
use Carbon\Carbon;
6
use W2w\Lib\Apie\Plugins\ApplicationInfo\ApplicationInfoPlugin;
7
use W2w\Lib\Apie\Plugins\Carbon\CarbonPlugin;
8
use W2w\Lib\Apie\Plugins\DateTime\DateTimePlugin;
9
use W2w\Lib\Apie\Plugins\Pagination\PaginationPlugin;
10
use W2w\Lib\Apie\Plugins\StatusCheck\StatusCheckPlugin;
11
use W2w\Lib\Apie\Plugins\Uuid\UuidPlugin;
12
use W2w\Lib\Apie\Plugins\ValueObject\ValueObjectPlugin;
13
14
/**
15
 * Helper class to make a general Apie instance with common plugins active.
16
 */
17
class DefaultApie
18
{
19
    public static function createDefaultApie(bool $debug = false, array $additionalPlugins = [], ?string $cacheFolder = null, bool $defaultResources = true): Apie
20
    {
21
        $plugins = $additionalPlugins;
22
        $plugins[] = class_exists(Carbon::class) ? new CarbonPlugin() : new DateTimePlugin();
23
        $plugins[] = new PaginationPlugin();
24
        $plugins[] = new UuidPlugin();
25
        $plugins[] = new ValueObjectPlugin();
26
        if ($defaultResources) {
27
            $plugins[] = new ApplicationInfoPlugin();
28
            $plugins[] = new StatusCheckPlugin([]);
29
        }
30
        return new Apie($plugins, $debug, $cacheFolder);
31
    }
32
}
33