3
3
namespace Stub \Framework \Main \Console ;
4
4
5
5
use DateTime ;
6
- use Stub \Framework \Contracts \Console \Input ;
7
- use Stub \Framework \Contracts \Console \Output ;
6
+ use Stub \Framework \Console \Base \Command ;
7
+ use Stub \Framework \Console \Base \Input ;
8
+ use Stub \Framework \Console \Base \Output ;
9
+ use Stub \Framework \Contracts \Console \Input as InputContract ;
10
+ use Stub \Framework \Contracts \Console \Output as OutputContract ;
8
11
use Stub \Framework \Contracts \Main \Application ;
9
12
use Throwable ;
10
13
@@ -25,6 +28,16 @@ class Kernel implements \Stub\Framework\Contracts\Console\Kernel
25
28
*/
26
29
protected $ commandStartedDateTime ;
27
30
31
+ /**
32
+ * @var InputContract
33
+ */
34
+ protected $ input ;
35
+
36
+ /**
37
+ * @var OutputContract
38
+ */
39
+ protected $ output ;
40
+
28
41
/**
29
42
* Создает новый экземпляр ядра консоли
30
43
* @param Application $app
@@ -33,25 +46,46 @@ class Kernel implements \Stub\Framework\Contracts\Console\Kernel
33
46
public function __construct (Application $ app )
34
47
{
35
48
$ this ->app = $ app ;
36
- self ::hendle ($ app ::getInput (), $ app ::getOutput ());
49
+ $ this ->input = Input::getInstance ();
50
+ $ this ->output = Output::getInstance ();
51
+ self ::handle ();
37
52
}
38
53
39
- public function hendle ( Input $ input , Output $ output )
54
+ public function handle ( )
40
55
{
41
56
$ this ->commandStartedDateTime = new DateTime ();
42
57
try {
43
- echo "Из потока ввода беру набор команд т.е. конкретно то, что мне выдаст метод " ;
44
- echo "И именно под защитой данной конструкции выполняем непосредственно передачу команды
45
- на отработку приложению " ;
58
+ $ this ->output ->writeln ($ this ->input ->getArguments ()[1 ]);
59
+ $ className = "Stub\Framework\Console\Commands \\" .$ this ->input ->getArguments ()[1 ] . 'Command ' ;
60
+ $ this ->output ->writeln ($ className );
61
+ $ this ->execute (new $ className ());
46
62
} catch (Throwable $ e ) {
47
- echo "Это на случай если ошибка возникнет, ее нужно передать на обработку (оформление) добавить к ней
48
- данные разные окружения и уже потом выдать на гора... " ;
63
+ $ this -> output -> writeln ( "Это на случай если ошибка возникнет, ее нужно передать на обработку (оформление) добавить к ней
64
+ данные разные окружения и уже потом выдать на гора... ") ;
49
65
}
50
66
}
51
67
68
+ protected function execute (Command $ command )
69
+ {
70
+ $ this ->output ->writeln ("Выполняю конкретную команду " );
71
+ $ this ->output ->writeln ($ command ->getName ());
72
+ $ this ->output ->writeln ("Завершаю выполнение команды " );
73
+ }
74
+
52
75
public function sayHello (): string
53
76
{
54
- echo "Hello!! It is Console Kernel... " ;
77
+ $ this -> output -> writeln ( "Hello!! It is Console Kernel... " ) ;
55
78
return "Hi!! It is Console Kernel... " ;
56
79
}
80
+
81
+ /**
82
+ * Завершение работы приложения вывод результата пользователю
83
+ * @param $request
84
+ * @param $response
85
+ * @return void
86
+ */
87
+ public function terminate ($ request , $ response )
88
+ {
89
+ exit ($ response );
90
+ }
57
91
}
0 commit comments