Completed
Push — dev ( 9f49ce...7f87b9 )
by Zach
02:14
created

SeedRunner::resolveSeeder()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
nc 2
nop 2
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace Yarak\DB\Seeders;
4
5
use Yarak\Config\Config;
6
use Yarak\Exceptions\FileNotFound;
7
8
class SeedRunner
9
{
10
    /**
11
     * Run the given seeder class.
12
     *
13
     * @param string $class
14
     */
15
    public function run($class)
16
    {
17
        $config = Config::getInstance();
18
19
        $this->loadSeeders($config);
20
21
        $seederClass = $this->resolveSeeder($config, $class);
22
23
        $seederClass->run();
24
    }
25
26
    /**
27
     * Load all the seeders in the seeders directory.
28
     * 
29
     * @param Config $config
30
     */
31
    protected function loadSeeders(Config $config)
32
    {
33
        $seedPath = $config->getSeedDirectory();
34
35
        $files = scandir($seedPath);
36
37
        $files = array_filter($files, function ($file) {
38
            return strpos($file, '.php') !== false;
39
        });
40
41
        foreach ($files as $file) {
42
            require_once $seedPath.$file;
43
        }
44
    }
45
46
    /**
47
     * Resolve the given seeder class.
48
     *
49
     * @param Config $config
50
     * @param string $class
51
     *
52
     * @return Seeder
53
     */
54
    protected function resolveSeeder(Config $config, $class)
55
    {
56
        if (!class_exists($class)) {
57
            $path = $config->getSeedDirectory();
58
59
            throw FileNotFound::seederNotFound($class, $path);
60
        }
61
62
        return new $class();
63
    }
64
}
65