Skip to content

Instantly share code, notes, and snippets.

@UnQuaiz
Last active September 22, 2021 18:56
Show Gist options
  • Save UnQuaiz/d3ac95bcc2a31d559bebb470e4380e40 to your computer and use it in GitHub Desktop.
Save UnQuaiz/d3ac95bcc2a31d559bebb470e4380e40 to your computer and use it in GitHub Desktop.
StringHandler

Имеется набор парсеров текстовых форматов: XmlParser и CsvParser. Сама реализация парсеров сейчас не имеет значения. Есть класс StringHandler - который имеет метод parseString(string $format, string $string)

Перепишите код таким образом, чтобы этот код можно было свободно расширять, добавлять новые типы парсеров, не модифицируя в дальнейшем класс StringHandler Руководствуйтесь принципами разработки которые знаете.

Решение можно оформить в виде gist'а Сделайте форк и в нём измените код

<?php
class StringHandler
{
public function parseString(string $format, string $string)
{
switch ($format) {
case 'xml':
$parser = new XmlParser();
break;
case 'csv':
$parser = new CsvParser();
break;
default:
throw new ParserNotFoundException();
}
return $parser->parse($string);
}
}
class XmlParser
{
public function parse(string $string)
{
//.....
}
}
class CsvParser
{
public function parse(string $string)
{
//.....
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment