Тестовое задание: Разработка пакета для обработки строк

Тестовое задание: Разработка пакета для обработки строк


Цель: Разработать пакет для Laravel userlist-handler, который будет обрабатывать строки различных форматов.

Требования:

  • Реализуйте обработку XML, CSV и JSON форматов (примеры в приложении).
  • Для парсинга использовать только стандартные библиотеки PHP.
  • Следовать стандартам разработки PHP и принципам SOLID.
  • Использовать строгую типизацию
  • Использовать PHP 8.2+

Бонусные задания:

  • Напишите Unit-тесты для основных классов пакета.
  • Опубликуйте пакет в Packagist

Ожидаемый результат:

  • Полностью функциональный пакет для Composer.
  • Возможность легкого расширения новыми типами парсеров.
  • Готовность пакета к публикации на Packagist.

Пожалуйста, предоставьте ссылку на репозиторий с вашим пакетом и краткое объяснение структуры пакета в README.md, примером установки и использования классов пакета в Laravel, и примером добавления нового парсера на базе вашего пакета.

Перед выполнением тестового задания, оцените сколько потребуется времени на выполнение и сообщите.


Примеры файлов для парсинга

example.json
{
    "users": [
      {
        "id": 1,
        "name": "Иван Петров",
        "email": "ivan@example.com",
        "age": 30
      },
      {
        "id": 2,
        "name": "Мария Сидорова",
        "email": "maria@example.com",
        "age": 25
      },
      {
        "id": 3,
        "name": "Алексей Иванов",
        "email": "alexey@example.com",
        "age": 35
      }
    ]
}
example.csv
id,name,email,age
1,Иван Петров,ivan@example.com,30
2,Мария Сидорова,maria@example.com,25
3,Алексей Иванов,alexey@example.com,35
example.xml
<?xml version="1.0" encoding="UTF-8"?>
<users>
  <user>
    <id>1</id>
    <name>Иван Петров</name>
    <email>ivan@example.com</email>
    <age>30</age>
  </user>
  <user>
    <id>2</id>
    <name>Мария Сидорова</name>
    <email>maria@example.com</email>
    <age>25</age>
  </user>
  <user>
    <id>3</id>
    <name>Алексей Иванов</name>
    <email>alexey@example.com</email>
    <age>35</age>
  </user>
</users>


Report Page