CreateMiddlewareCommand::actionIndex()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 11
nc 2
nop 0
dl 0
loc 18
rs 9.9
c 0
b 0
f 0
1
<?php
2
3
namespace App\Ship\Command;
4
5
use App\Ship\Utils\FileCreator;
6
use Rudra\Container\Facades\Rudra;
7
use Rudra\Cli\ConsoleFacade as Cli;
8
9
class CreateMiddlewareCommand extends FileCreator
10
{
11
    /**
12
     * Creates a file with Seed data
13
     * -----------------------------
14
     * Создает файл с данными Seed
15
     */
16
    public function actionIndex(): void
17
    {
18
        Cli::printer("Enter middleware name: ", "magneta");
19
        $prefix    = str_replace(PHP_EOL, "", Cli::reader());
20
        $className = ucfirst($prefix) . 'Middleware';
21
22
        Cli::printer("Enter container: ", "magneta");
23
        $container = ucfirst(str_replace(PHP_EOL, "", Cli::reader()));
24
25
        if (!empty($container)) {
26
27
            $this->writeFile(
28
                [str_replace('/', DIRECTORY_SEPARATOR, Rudra::config()->get('app.path') . "/app/Containers/$container/Middleware/"), "{$className}.php"],
29
                $this->createClass($className, $container)
30
            );
31
32
        } else {
33
            $this->actionIndex();
34
        }
35
    }
36
37
    /**
38
     * @param string $className
39
     * @param string $container
40
     * @return string
41
     *
42
     * Creates class data
43
     * ------------------
44
     * Создает данные класса
45
     */
46
    private function createClass(string $className, string $container): string
47
    {
48
        return <<<EOT
49
<?php
50
51
namespace App\Containers\\{$container}\Middleware;
52
53
use Rudra\Router\MiddlewareInterface;
54
use Rudra\Router\RouterFacade as Router;
55
56
class {$className} implements MiddlewareInterface
57
{
58
    public function __invoke(\$chainOfMiddlewares)
59
    {
60
        dump(__CLASS__);
61
        \$this->next(\$chainOfMiddlewares);
62
    }
63
64
    public function next(array \$chainOfMiddlewares): void
65
    {
66
        Router::handleMiddleware(\$chainOfMiddlewares);
67
    }
68
}\r\n
69
EOT;
70
    }
71
}
72