/
jagepard
/
PhpDesignPatterns-Interpreter
Обзор
Документация
Войти
/
jagepard
/
PhpDesignPatterns-Interpreter
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/Interpreter.php
50 строк
2 KB
Jagepard
Major update
30 апр 2026, 16:53
30 апр 2026, 16:53
a611de4
Код
Авторство
О чём код?
<?php declare(strict_types=1); namespace Behavioral\Interpreter; class Interpreter implements InterpreterInterface { public function __construct(private CardFile $cardFile) {} /** * Interpret the request according to the incoming string * ------------------------------------------------------- * Инерпретирует запрос в соответствии со входящей строкой * * @param string $inputString * @return string */ public function interpret(string $inputString): string { $output = []; if (preg_match('~[0-9]+~', $inputString, $match)) { $index = $match[0] - 1; } else { throw new \InvalidArgumentException("Неверный запрос. Введите 'album 2' или '3 author'."); } $parts = explode(' ', $inputString); $albums = $this->cardFile->getAlbums(); if (!isset($albums[$index])) { throw new \InvalidArgumentException("Альбом с индексом {$match[0]} не найден. Всего доступно: " . count($albums)); } $album = $albums[$index]; foreach ($parts as $part) { if ($part === 'album') { $output[] = sprintf("Album: %s", $album->getAlbum()); } if ($part === 'author') { $output[] = sprintf("Author: %s", $album->getAuthor()); } } return implode(', ', $output) . PHP_EOL; } }