Completed
Push — master ( c34cac...3c68a7 )
by Pieter
04:47
created

DefaultApie::createDefaultApie()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

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