cogepfrance / php-utils
There is no license information available for the latest version (v3.5.3) of this package.
Librairie de composants utilitaires PHP
v3.5.3
2026-10-22 09:11 UTC
Requires
- php: >=8.4
- ext-amqp: *
- ext-curl: *
- ext-simplexml: *
- php-amqplib/php-amqplib: ^3.7.4
- phpstan/extension-installer: ^1.4
- symfony/cache-contracts: ^3.6
- symfony/clock: ^8.0
- symfony/config: ^8.0
- symfony/console: ^8.0
- symfony/dependency-injection: ^8.0
- symfony/framework-bundle: ^8.0
- symfony/http-client: ^8.0
- symfony/json-streamer: ^8.1
- symfony/messenger: ^8.0
- symfony/monolog-bundle: ^4.0
- symfony/routing: ^8.0
- symfony/serializer: ^8.0
- symfony/string: ^8.0
- symfony/validator: ^8.0
Requires (Dev)
- captainhook/captainhook-phar: ^5.27.4
- captainhook/hook-installer: ^1.0.4
- composer/composer: ^2.9
- mockery/mockery: ^1.6.12
- phpstan/phpstan: ^2.1.33
- phpstan/phpstan-symfony: ^2.0.9
- phpunit/phpunit: ^12.5.5
- slevomat/coding-standard: ^8.26
- symplify/easy-coding-standard: ^13.0.4
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v3.5.3
- v3.5.2
- v3.5.1
- v3.5.0
- v3.4.0
- v3.3.1
- 3.3.0
- 3.2.1
- 3.2.0
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.2
- 3.0.1
- 3.0.0
- 2.1.0
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.1
- 2.0.0
- 1.4.0
- 1.3.0
- 1.2.0
- 1.1.0
- 1.0.3
- v1.0.2
- 1.0.1
- 1.0.0
- dev-feature/add_csv_delimiter
- dev-feature/add-3-endpoints-test
- dev-feature/3-input-adapters
- dev-feature/dtoToEntity-function-and-typing-fix
- dev-feature/LoggerFormatter-include-context
This package is auto-updated.
Last update: 2026-10-22 09:11:54 UTC
README
Cette librairie regroupe un ensemble de composants utilitaires pour uniformiser le développement des projets (Connecteurs, Mapping, DTO, etc.).
🏗️ Architecture & Structures
- DynamicPropertyClass : Permet de déclarer des classes dont on peut remplir les propriétés dynamiquement sans les avoir préalablement déclarées.
- DTOInterface : Interface de marquage pour représenter un
DTO. - EntityInterface : Interface de marquage pour représenter une
Entity.
🔌 Connectors API
- ApiConnector (Abstract) : Gère l'authentification ainsi que la mise en cache du jeton (Token). La configuration par défaut peut être surchargée selon les spécificités de l'API ciblée.
- ApiConnectorHelper :
processInBatches: Traite des requêtes en parallèle par lots avec gestion native du retry.streamResponse: Stream les réponses API pour une lecture au fil de l'eau (optimisation mémoire).
- ApiException (Abstract) : Classe de base pour traiter les retours d'erreurs API et extraire les détails de l'exception.
💾 InMemory (Persistence)
CSV
- CsvFetcher : Permet de lire un fichier CSV et d'en retourner les données sous forme de tableau.
- CsvPersister : Écrit un CSV à partir d'un tableau de données ou d'objets.
- Utilise un
warmupLimit(X) pour extraire les headers depuis les attributs ou les clés des X premières données. - Retourne un objet
PersisterResult.
- Utilise un
JSON
- JsonPersister : Permet d'écrire un fichier JSON depuis un tableau de données ou d'objets.
- Retourne un objet
PersisterResult.
- Retourne un objet
📝 Logs
- LoggerFormator : Gère le formatage et la colorisation des logs dans la console.
- UrlTruncatorProcessor : Processeur Monolog qui tronque les messages de plus de 500 caractères en ajoutant
...pour éviter les logs trop volumineux. - SensitiveDataRedactorProcessor : Masque le host et la query string de toute URL (ainsi que les bearer tokens) présente dans un log. Activé automatiquement, uniquement sur le channel Monolog
sensitive(channel générique, partagé par tout composant de la lib exposant potentiellement des secrets dans une URL — aujourd'huiAzureBlobClientvia le servicecogep_php_utils.sensitive_http_client, réutilisable pour de futurs connecteurs).- ⚙️ Fonctionne sans configuration dans l'application consommatrice (le channel
sensitiveest créé automatiquement via#[WithMonologChannel]). - ⚠️ Nécessite que
MonologBundlesoit activé (config/bundles.php) dans l'application — c'est quasi toujours le cas dès qu'un logger PSR-3 est utilisé. Si ce n'est pas le cas, la fonctionnalité se désactive silencieusement (pas d'erreur, pas de log sur ce channel). - 💡 Si votre
monolog.yamlrestreint les handlers à une liste explicite de channels (channels: ['app', ...]en mode inclusif), pensez à y ajoutersensitivepour voir apparaître ces logs. - ℹ️ Les headers HTTP (dont
Authorization: Bearer ...) ne sont pas inclus par défaut dans les logs internes de Symfony HttpClient (seuls méthode/URL/status/durée le sont) : le masquage du channelsensitivecible donc avant tout les secrets embarqués dans l'URL elle-même (SAS tokens, presigned URLs...).
- ⚙️ Fonctionne sans configuration dans l'application consommatrice (le channel
🔄 Mapping
- DtoEntityMapper :
mergeDtosToEntity: Permet de consolider plusieursDTOInterfacevers uneEntityInterfaceunique.- Règle : Les attributs doivent porter le même nom. La priorité est définie du premier au dernier DTO : l'outil ne remplit que les propriétés encore vides de l'entité.
🧪 Tests & Qualité
- Dummy Objects : Fournit
DummyDynamicDTOetDummyDynamicEntitypour faciliter les tests unitaires. - Dev - CoverageChecker : Outil de contrôle qualité qui analyse le fichier
clover.xml.- Permet de configurer un seuil (
threshold) de couverture minimum. - Stoppe le processus (
exit 1) si le pourcentage de couverture est insuffisant.
- Permet de configurer un seuil (