Skip to content

Instantly share code, notes, and snippets.

@Salriel
Forked from UnQuaiz/README.md
Last active September 20, 2021 14:09
Show Gist options
  • Save Salriel/9f892fda3c971907e090c261ca62b7ea to your computer and use it in GitHub Desktop.
Save Salriel/9f892fda3c971907e090c261ca62b7ea 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)
{
$format = ucfirst(strtolower($format)).'Parser';
$parser = new $format();
return $parser->parse($string);
}
}
interface IParser{
public function parse(string $string);
}
class XmlParser implements IParser
{
public function parse(string $string)
{
//.....
}
}
class CsvParser implements IParser
{
public function parse(string $string)
{
//.....
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment