PHPackages                             frais-vi/test-task\_pyrobyte - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. frais-vi/test-task\_pyrobyte

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

frais-vi/test-task\_pyrobyte
============================

A library for generating sitemap files in XML, CSV, and JSON formats.

1.0.4(1y ago)06PHPPHP &gt;=8.2

Since Sep 10Pushed 1y ago1 watchersCompare

[ Source](https://github.com/FraisVI/TestTask_Pyrobyte)[ Packagist](https://packagist.org/packages/frais-vi/test-task_pyrobyte)[ RSS](/packages/frais-vi-test-task-pyrobyte/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (5)Dependencies (1)Versions (6)Used By (0)

Библиотека генерации карты сайта

Необходимо написать библиотеку генерации карты сайта в различных файловых форматах: xml, csv, json. Библиотеку выносим в репозиторий на гитхабе и делаем возможность подключения через композер  в скрипте-примере.

При инициализации библиотеки в скрипте передаем список страниц сайта в виде массива с параметрами: адрес страницы (loc), дата изменения страницы (lastmod), приоритет парсинга (priority), периодичность обновления (changefreq). Также при инициализации передаем тип файла для генерации: xml, csv, json; и путь к файлу для сохранения. Например, “/var/www/site.ru/upload/sitemap.xml”. Если такой папки для сохранения не существует, то библиотека должна создать ее.

После инициализации объект библиотеки должен сгенерировать файл выбранного типа карты сайта.

Если возникли ошибки при генерации файла, то библиотека должна бросить исключение. Для каждой ошибки свой класс исключения. Примеры исключений: Невалидные данные при инициализации парсинга. Ошибка доступа записи к файлу. и т.д.

В тестовом задании скинуть пример использования библиотеки и ссылку на репозиторий библиотеки (можно на гитхабе). Примеры генерируемых файлов В зависимости от указанного типа файла при инициализации библиотеки на выходе должен сгенерироваться файл с такой структурой содержимого:

XML

```

		https://site.ru/
		2020-12-14
		1
		hourly

		https://site.ru/news
		2020-12-10
		0.5
		daily

		https://site.ru/about
		2020-12-07
		0.1
		weekly

		https://site.ru/products
		2020-12-12
		0.5
		daily

		https://site.ru/products/ps5
		2020-12-11
		0.1
		weekly

		https://site.ru/products/xbox
		2020-12-12
		0.1
		weekly

		https://site.ru/products/wii
		2020-12-11
		0.1
		weekly

```

CSV

```
loc;lastmod;priority;changefreq
https://site.ru/;2020-12-14;1;hourly
https://site.ru/news;2020-12-10;0.5;daily
https://site.ru/about;2020-12-07;0.1;weekly
https://site.ru/products;2020-12-12;0.5;daily
https://site.ru/products/ps5;2020-12-11;0.1;weekly
https://site.ru/products/xbox;2020-12-12;0.1;weekly
https://site.ru/products/wii;2020-12-11;0.1;weekly
```

JSON

```
[{
	loc: “https://site.ru/”,
	lastmod: “2020-12-14”,
	priority: 1,
	changefreq: “hourly”
},
{
	loc: “https://site.ru/news”,
	lastmod: “2020-12-10”,
	priority: 0.5,
	changefreq: “daily”
},
{
	loc: “https://site.ru/about”,
	lastmod: “2020-12-07”,
	priority: 0.1,
	changefreq: “weekly”
},
{
	loc: “https://site.ru/products”,
	lastmod: “2020-12-12”,
	priority: 0.5,
	changefreq: “daily”{
	loc: “https://site.ru/products/ps5”,
	lastmod: “2020-12-11”,
	priority: 0.1,
	changefreq: “weekly”
},
{
	loc: “https://site.ru/products/xbox”,
	lastmod: “2020-12-12”,
	priority: 0.1,
	changefreq: “weekly”
},
{
	loc: “https://site.ru/products/wii”,
	lastmod: “2020-12-11”,
	priority: 0.1,
	changefreq: “weekly”
}]
```

При этом массив страниц должен передаваться при инициализации библиотеки, а не захардкоден в самой либе.

Важно! Понимание ООП Писать легко поддерживаемый, понятный и масштабируемый код (SOLID) Отнестись к заданию с полной ответственностью - как будто вы отправляете его не на проверку, а на прод

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance35

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

5

Last Release

613d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ea2796987dfe904ebdae371b1c171fca84f4411e53bcc413323f84299cc3f280?d=identicon)[FraisVI](/maintainers/FraisVI)

---

Top Contributors

[![FraisVI](https://avatars.githubusercontent.com/u/169642258?v=4)](https://github.com/FraisVI "FraisVI (22 commits)")

### Embed Badge

![Health badge](/badges/frais-vi-test-task-pyrobyte/health.svg)

```
[![Health](https://phpackages.com/badges/frais-vi-test-task-pyrobyte/health.svg)](https://phpackages.com/packages/frais-vi-test-task-pyrobyte)
```

###  Alternatives

[kaystrobach/development-tools

111.9k](/packages/kaystrobach-development-tools)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
