Участие в разработке
Мы приветствуем любой вклад — отчёты об ошибках, улучшения документации, предложения по функциям и код. Эта страница описывает процесс. Полное соглашение с участниками и подробные рекомендации см. в CONTRIBUTING.md на GitHub.
Настройка среды разработки
Предварительные требования
| Требование | Минимальная версия |
|---|---|
| PHP | 8.5+ |
| Composer | 2.x |
| PHPUnit | 12.x |
| PHPStan | 2.x |
Начало работы
# Клонирование репозитория
git clone https://github.com/yeeefang/tcpdf-next.git
cd tcpdf-next
# Установка зависимостей
composer install
# Проверка работоспособности
composer testЗапуск тестов
TCPDF-Next использует PHPUnit 12 с отдельными наборами для модульных и интеграционных тестов.
# Запуск полного набора тестов
composer test
# Запуск только модульных тестов (быстро, без I/O)
composer test:unit
# Запуск только интеграционных тестов (вывод файлов, загрузка шрифтов и т.д.)
composer test:integrationВсе тесты должны пройти перед merge pull request. CI-конвейер запускает полный набор при каждом push.
Статический анализ
Кодовая база анализируется PHPStan на Level 10 (строжайший уровень):
composer analyseНулевое количество ошибок обязательно. Если ваше изменение вводит ошибку PHPStan, CI-сборка завершится неудачей.
Требования к стилю кода
declare(strict_types=1)в начале каждого PHP-файла.- PHPStan Level 10 — никаких исключений baseline для нового кода.
readonly-классы предпочтительны, когда мутабельное состояние не требуется.- Backed enum-ы для всех конечных наборов значений (никаких магических строк или целочисленных констант).
- Именованные параметры в методах публичного API для ясности.
- Никаких типов
mixed— каждый параметр, возвращаемый тип и свойство должны быть явно типизированы. - Final по умолчанию — классы являются
final, если не предназначены для расширения.
Процесс Pull Request
Форкните репозиторий и создайте feature-ветку от
main.Сначала напишите тесты — TCPDF-Next следует TDD-ориентированному процессу. Новые функции и исправления ошибок должны включать соответствующие тесты.
Делайте коммиты сфокусированными — одно логическое изменение на коммит. Пишите понятные сообщения коммитов.
Запустите полную проверку перед push:
bashcomposer analyse && composer testОткройте pull request в
main. Заполните шаблон PR:- Описание изменения и его мотивация.
- Ссылки на связанные issues (используйте синтаксис
Closes #123). - Любые разрушающие изменения или заметки по миграции.
Отвечайте на отзывы ревью — мейнтейнеры могут запросить изменения. Пожалуйста, ответьте на каждый комментарий или обсудите его.
Отчёты об ошибках
Откройте GitHub Issue с указанием:
- Версии PHP и ОС.
- Версии TCPDF-Next (
composer show yeeefang/tcpdf-next). - Минимального воспроизводимого кода.
- Ожидаемого и фактического поведения.
Уязвимости безопасности
Не сообщайте о проблемах безопасности через публичные GitHub Issues. Используйте GitHub Security Advisories. Подробнее см. FAQ.
Спасибо
Каждый вклад делает TCPDF-Next лучше. Независимо от того, исправляете ли вы опечатку в документации или реализуете крупную функцию, ваше время и усилия искренне ценятся.