Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
AbstractController
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
4 / 4
5
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
2
 application
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 console
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 error
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2declare(strict_types=1);
3/**
4 * Pop PHP Framework (http://www.popphp.org/)
5 *
6 * @link       https://github.com/popphp/pop-bootstrap
7 * @author     Nick Sagona, III <nick@noladev.com>
8 * @copyright  Copyright (c) 2012-2025 NOLA Interactive, LLC.
9 * @license    http://www.popphp.org/license     New BSD License
10 */
11
12/**
13 * @namespace
14 */
15namespace Pop\Kettle\Controller;
16
17use Pop\Application;
18use Pop\Dispatch\ConsoleTrait;
19use Pop\Console\Color;
20use Pop\Console\Console;
21use Pop\Kettle\Exception;
22use Pop\Router\Match\Cli;
23
24/**
25 * Console abstract controller class
26 *
27 * @category   Pop\Kettle
28 * @package    Pop\Kettle
29 * @author     Nick Sagona, III <nick@noladev.com>
30 * @copyright  Copyright (c) 2012-2025 NOLA Interactive, LLC.
31 * @license    http://www.popphp.org/license     New BSD License
32 * @version    3.0.0
33 */
34abstract class AbstractController extends \Pop\Controller\AbstractController
35{
36
37    /**
38     * Traits
39     */
40    use ConsoleTrait {
41        ConsoleTrait::__construct as private constructConsoleController;
42    }
43
44    /**
45     * Application object
46     * @var ?Application
47     */
48    protected ?Application $application = null;
49
50    /**
51     * Console object
52     * @var ?Console
53     */
54    protected ?Console $console = null;
55
56    /**
57     * Bypass maintenance false
58     * @var bool
59     */
60    protected bool $bypassMaintenance = true;
61
62    /**
63     * Constructor for the controller
64     *
65     * @param  Application $application
66     * @param  Console     $console
67     */
68    public function __construct(Application $application, Console $console = new Console(120))
69    {
70        $this->constructConsoleController($application, $console);
71
72        $this->console->setHelpColors(Color::BOLD_CYAN, Color::BOLD_GREEN, Color::BOLD_MAGENTA);
73
74        $routeMatch = $application->router()->getRouteMatch();
75        if ($routeMatch instanceof Cli) {
76            $this->console->addCommandsFromRoutes($routeMatch, './kettle');
77        }
78    }
79
80    /**
81     * Get application object
82     *
83     * @return Application
84     */
85    public function application(): Application
86    {
87        return $this->application;
88    }
89
90    /**
91     * Get request object
92     *
93     * @return Console
94     */
95    public function console(): Console
96    {
97        return $this->console;
98    }
99
100    /**
101     * Default error action method
102     *
103     * @throws Exception
104     * @return void
105     */
106    public function error(): void
107    {
108        throw new Exception('Invalid Command');
109    }
110
111}