Создавайте API документацию без усилий
PhpLightDoc автоматически анализирует ваш Laravel код и генерирует чистую, простую и интерактивную документацию.
Почему PhpLightDoc?
Простота и скорость вместо сложности и затрат.
Проблема Swagger
Устали писать многословные YAML или бесконечные аннотации? Swagger мощный, но часто требует значительных ручных усилий и усложняет код.
PhpLightDoc
PhpLightDoc находит золотую середину. Это бесплатный open-source пакет, который автоматически генерирует документацию, требуя лишь минимальных и интуитивно понятных PHP 8 атрибутов или комментариев.
Платные Инструменты
Инструменты вроде Scramble предлагают отличную автоматизацию, но имеют свою цену. Это может быть барьером для инди-разработчиков и небольших проектов.
Быстрый старт
Начните работу за пару минут.
1. Установите пакет через Composer
composer require wfgm5k2d/php-light-doc
2. Опубликуйте конфигурацию и шаблоны
php artisan vendor:publish --provider='Wfgm5k2d\PhpLightDoc\Providers\PhpLightDocServiceProvider'
3. Настройте .env файл
# Ваш путь к файлу документации
PATH_TO_FILE_DOCUMENTATION='/your_full_path_to_file/api_documentation.json'
# Папки для сканирования (через запятую)
PATH_TO_DIR_SCAN='app/Domain,app/Http/Controllers'
# Папки для исключения (через запятую)
PATH_TO_DIR_EXCLUDE='app/Http/Controllers/Admin,CustomBackupController'
4. Сгенерируйте документацию
Запустите команду, и ваша документация будет доступна по адресу /doc.
php artisan doc:generate
Документация
Используйте простые PHP 8 атрибуты или комментарии для обогащения вашей документации.
Группировка контроллеров
Структурируйте вашу документацию, объединяя контроллеры в логические группы.
Через комментарий
// group Пользователи
final class UserController extends Controller
Через атрибут (рекомендуется)
#[DocGName('Пользователи')]
final class UserController extends Controller
Расширенная группировка
Для создания более сложной иерархии вы можете объединять группы контроллеров в одну большую категорию. Для этого передайте второй параметр в атрибут DocGName.
Через атрибут (рекомендуется)
// Этот контроллер попадет в подгруппу "User API" внутри основной группы "Пользователи"
#[DocGName('User API', 'Пользователи')]
final class UserController extends Controller {}
// Этот контроллер попадет в подгруппу "Auth" внутри той же основной группы
#[DocGName('Auth', 'Пользователи')]
final class AuthController extends Controller {}
Названия роутов
Дайте вашим API-эндпоинтам понятные человеку имена для легкой идентификации.
Через комментарий
// name Создать заявку на компенсацию
public function createApplication(Request $request): JsonResponse
Через атрибут (рекомендуется)
#[DocRName('Создать заявку на компенсацию')]
public function createApplication(Request $request): JsonResponse
Требования Middleware
Укажите требования к авторизации или другие кастомные заголовки прямо в документации.
Через комментарий
// middleware-name Требуется аутентификация
// middleware-value Authorization: Bearer {token}
final class SecureController extends Controller
Через атрибут (рекомендуется)
#[DocMiddleware('Требуется аутентификация', 'Authorization: Bearer {token}')]
final class SecureController extends Controller
Коды ответов
Пакет автоматически определяет коды ответов из вашего кода, но вы также можете указать их вручную.
Через комментарий
// response-codes 200 404 500
public function getUserData(Request $request): JsonResponse
Через атрибут (рекомендуется)
#[DocResponseCodes([200, 404, 500])]
public function getUserData(Request $request): JsonResponse
Внесите свой вклад
Библиотека находится в активной разработке. Если у вас есть идеи для улучшения, исправления ошибок или новые функции, мы с радостью будем ждать ваши pull request!