Skip to content

Участие в разработке

Мы приветствуем любой вклад — отчёты об ошибках, улучшения документации, предложения по функциям и код. Эта страница описывает процесс. Полное соглашение с участниками и подробные рекомендации см. в CONTRIBUTING.md на GitHub.

Настройка среды разработки

Предварительные требования

ТребованиеМинимальная версия
PHP8.5+
Composer2.x
PHPUnit12.x
PHPStan2.x

Начало работы

bash
# Клонирование репозитория
git clone https://github.com/yeeefang/tcpdf-next.git
cd tcpdf-next

# Установка зависимостей
composer install

# Проверка работоспособности
composer test

Запуск тестов

TCPDF-Next использует PHPUnit 12 с отдельными наборами для модульных и интеграционных тестов.

bash
# Запуск полного набора тестов
composer test

# Запуск только модульных тестов (быстро, без I/O)
composer test:unit

# Запуск только интеграционных тестов (вывод файлов, загрузка шрифтов и т.д.)
composer test:integration

Все тесты должны пройти перед merge pull request. CI-конвейер запускает полный набор при каждом push.

Статический анализ

Кодовая база анализируется PHPStan на Level 10 (строжайший уровень):

bash
composer analyse

Нулевое количество ошибок обязательно. Если ваше изменение вводит ошибку PHPStan, CI-сборка завершится неудачей.

Требования к стилю кода

  • declare(strict_types=1) в начале каждого PHP-файла.
  • PHPStan Level 10 — никаких исключений baseline для нового кода.
  • readonly-классы предпочтительны, когда мутабельное состояние не требуется.
  • Backed enum-ы для всех конечных наборов значений (никаких магических строк или целочисленных констант).
  • Именованные параметры в методах публичного API для ясности.
  • Никаких типов mixed — каждый параметр, возвращаемый тип и свойство должны быть явно типизированы.
  • Final по умолчанию — классы являются final, если не предназначены для расширения.

Процесс Pull Request

  1. Форкните репозиторий и создайте feature-ветку от main.

  2. Сначала напишите тесты — TCPDF-Next следует TDD-ориентированному процессу. Новые функции и исправления ошибок должны включать соответствующие тесты.

  3. Делайте коммиты сфокусированными — одно логическое изменение на коммит. Пишите понятные сообщения коммитов.

  4. Запустите полную проверку перед push:

    bash
    composer analyse && composer test
  5. Откройте pull request в main. Заполните шаблон PR:

    • Описание изменения и его мотивация.
    • Ссылки на связанные issues (используйте синтаксис Closes #123).
    • Любые разрушающие изменения или заметки по миграции.
  6. Отвечайте на отзывы ревью — мейнтейнеры могут запросить изменения. Пожалуйста, ответьте на каждый комментарий или обсудите его.

Отчёты об ошибках

Откройте GitHub Issue с указанием:

  • Версии PHP и ОС.
  • Версии TCPDF-Next (composer show yeeefang/tcpdf-next).
  • Минимального воспроизводимого кода.
  • Ожидаемого и фактического поведения.

Уязвимости безопасности

Не сообщайте о проблемах безопасности через публичные GitHub Issues. Используйте GitHub Security Advisories. Подробнее см. FAQ.

Спасибо

Каждый вклад делает TCPDF-Next лучше. Независимо от того, исправляете ли вы опечатку в документации или реализуете крупную функцию, ваше время и усилия искренне ценятся.

Распространяется по лицензии LGPL-3.0-or-later.