-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun.php
56 lines (47 loc) · 1.94 KB
/
run.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/env php
<?php
use Sichkarev\Task\Application;
use Sichkarev\Task\Commands\{StartCommand, TurnCommand, WalkCommand};
use Sichkarev\Task\DataProviders\FileDataProvider;
use Sichkarev\Task\Handlers\ConsoleExceptionHandler;
use Sichkarev\Task\Parsers\TextParser;
use Sichkarev\Task\Services\CalculateRouteService;
use Sichkarev\Task\Validators\TaskLogicValidator\Rules\{EndLineRule,
FirstWordRule,
MaxTestCaseCountRule,
NumericInputValidRule,
RouteCountCorrectRule,
RouteTypeCorrectRule,
RowStartWithFloatRule,
TestCaseCountPeopleRule};
use Sichkarev\Task\Validators\TaskLogicValidator\TaskLogicValidator;
// подключаем composer autoload psr-4
require_once __DIR__ . './vendor/autoload.php';
// создаем экземпляр приложения и устанавливаем сервис расчёта
$service = new CalculateRouteService([
StartCommand::class,
WalkCommand::class,
TurnCommand::class
]);
$app = new Application($service);
// устанавливаем обработчик ошибок приложения
$app->setExceptionHandler(new ConsoleExceptionHandler());
// добавляем в приложение провайдеры откуда у нас будут получены нужные нам данные
$app->addDataProvider(new FileDataProvider('.\data\input.txt'));
// определяем и устанавливаем парсер строк
$app->setDataParser(new TextParser());
// определяем валидатор и правила валидации
$validator = new TaskLogicValidator([
RowStartWithFloatRule::class,
RouteTypeCorrectRule::class,
RouteCountCorrectRule::class,
NumericInputValidRule::class,
MaxTestCaseCountRule::class,
FirstWordRule::class,
TestCaseCountPeopleRule::class,
EndLineRule::class
]);
// устанавливаем валидатор
$app->setValidator($validator);
$exitCode = $app->run();
exit($exitCode);