PHPackages                             julienlinard/php-api - 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. [API Development](/categories/api)
4. /
5. julienlinard/php-api

ActiveLibrary[API Development](/categories/api)

julienlinard/php-api
====================

API REST automatique inspirée d'API Platform pour PHP

1.3.2(5mo ago)010MITPHPPHP ^8.1

Since Dec 7Pushed 3mo agoCompare

[ Source](https://github.com/julien-lin/php-api)[ Packagist](https://packagist.org/packages/julienlinard/php-api)[ RSS](/packages/julienlinard-php-api/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (3)Versions (9)Used By (0)

PHP API
=======

[](#php-api)

Bibliothèque PHP pour créer des APIs REST automatiques, inspirée d'API Platform de Symfony.

Fonctionnalités
---------------

[](#fonctionnalités)

- ✅ Annotations pour exposer des entités en API
- ✅ Sérialisation JSON automatique avec groupes
- ✅ Opérations CRUD automatiques
- ✅ **Advanced filtering system** : SearchFilter, DateFilter, RangeFilter, BooleanFilter, OrderFilter
- ✅ **Automatic sorting** : Multi-column sorting via query parameters
- ✅ **Automatic pagination** : Support for `page` and `limit` parameters with metadata
- ✅ **Automatic validation** : Data validation with structured messages (RFC 7807)
- ✅ **Standardized error handling** : Problem Details format (RFC 7807)
- ✅ **Relations support** : Embedding and subresources for Doctrine relations
- ✅ **Events system** : Pre/post hooks integrated with core-php EventDispatcher
- ✅ **Documentation Swagger/OpenAPI automatique**
- ✅ **Interface Swagger UI pour tester l'API**
- ✅ Intégration avec le Core PHP existant

Installation
------------

[](#installation)

```
composer require julienlinard/php-api
```

Utilisation
-----------

[](#utilisation)

### 1. Annoter une entité

[](#1-annoter-une-entité)

```
use JulienLinard\Api\Annotation\ApiResource;
use JulienLinard\Api\Annotation\ApiProperty;
use JulienLinard\Doctrine\Mapping\Entity;
use JulienLinard\Doctrine\Mapping\Id;
use JulienLinard\Doctrine\Mapping\Column;

#[ApiResource(
    operations: ['GET', 'POST', 'PUT', 'DELETE'],
    routePrefix: '/api'
)]
#[Entity]
class User
{
    #[Id]
    #[Column(type: 'integer')]
    #[ApiProperty(groups: ['read', 'write'])]
    public ?int $id = null;

    #[Column(type: 'string', length: 255)]
    #[ApiProperty(groups: ['read', 'write'])]
    public string $email;

    #[Column(type: 'string', length: 255)]
    #[ApiProperty(groups: ['read'])] // Seulement en lecture
    public string $password;

    #[Column(type: 'string', length: 100)]
    #[ApiProperty(groups: ['read', 'write'])]
    public string $name;
}
```

### 2. Créer un contrôleur API

[](#2-créer-un-contrôleur-api)

```
use JulienLinard\Api\Controller\ApiController;
use JulienLinard\Api\Serializer\JsonSerializer;

class UserController extends ApiController
{
    public function __construct()
    {
        parent::__construct(User::class, new JsonSerializer());
    }
}
```

### 3. Définir les routes

[](#3-définir-les-routes)

```
use JulienLinard\Router\Router;

$router = new Router();

// Routes automatiques pour l'API
$router->get('/api/users', [UserController::class, 'index']);
$router->get('/api/users/{id}', [UserController::class, 'show']);
$router->post('/api/users', [UserController::class, 'create']);
$router->put('/api/users/{id}', [UserController::class, 'update']);
$router->delete('/api/users/{id}', [UserController::class, 'delete']);
```

### 4. Ajouter la documentation Swagger (optionnel)

[](#4-ajouter-la-documentation-swagger-optionnel)

```
use JulienLinard\Api\Controller\SwaggerController;

// Créer le contrôleur Swagger avec vos entités
$swaggerController = new SwaggerController(
    entityClasses: [User::class, Product::class], // Liste des entités exposées
    title: 'Mon API',
    version: '1.0.0',
    basePath: '/api'
);

// Routes pour la documentation
$router->get('/api/docs', [$swaggerController, 'ui']);        // Interface Swagger UI
$router->get('/api/docs.json', [$swaggerController, 'json']);  // Spec OpenAPI JSON
$router->get('/api/docs.yaml', [$swaggerController, 'yaml']);  // Spec OpenAPI YAML
```

Accédez à `/api/docs` pour voir l'interface Swagger UI interactive où vous pouvez :

- Voir toutes les entités exposées
- Voir toutes les opérations disponibles (GET, POST, PUT, DELETE, PATCH)
- Tester les requêtes directement dans le navigateur
- Voir les schémas de données

Documentation
-------------

[](#documentation)

Voir [README.fr.md](README.fr.md) pour la documentation complète en français.

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance77

Regular maintenance activity

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity49

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

8

Last Release

161d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e92f8ec82d7c7caf71b6b8a80d24654e66115d80b736bc481952e92eddd61f16?d=identicon)[Julien Linard](/maintainers/Julien%20Linard)

---

Top Contributors

[![julien-lin](https://avatars.githubusercontent.com/u/58387563?v=4)](https://github.com/julien-lin "julien-lin (8 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/julienlinard-php-api/health.svg)

```
[![Health](https://phpackages.com/badges/julienlinard-php-api/health.svg)](https://phpackages.com/packages/julienlinard-php-api)
```

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M480](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M272](/packages/twilio-sdk)[knplabs/github-api

GitHub API v3 client

2.2k15.8M187](/packages/knplabs-github-api)[facebook/php-business-sdk

PHP SDK for Facebook Business

90121.9M34](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

73813.7M114](/packages/meilisearch-meilisearch-php)[google/gax

Google API Core for PHP

263103.1M454](/packages/google-gax)

PHPackages © 2026

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