Тестовое задание: Разработка пакета для обработки строк
Цель: Разработать пакет для 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>