anode-club / sdk-php
SDK PHP de l'ANODE
1.5
2026-04-10 13:18 UTC
Requires (Dev)
- friendsofphp/php-cs-fixer: 3.*
- phpstan/phpstan: 2.*
- phpunit/phpunit: 13.*
README
Description
Ce SDK PHP permet la gestion des métadonnées des Mandats d'AccÚs aux Données des PDL (Points De Livraison) dans les fichiers PDF. Il offre une API simple et robuste pour :
- Lire les métadonnées des mandats depuis des PDFs existants
- Ăcrire des mĂ©tadonnĂ©es dans des PDFs de mandats
- Gérer les informations des mandants (particuliers et professionnels)
- Manipuler les données de points de livraison (PRM/PCE)
Installation
Prérequis
- PHP 8.1 ou supérieur
- Composer
Installation via Composer
composer require anode-club/sdk-php
Structure du projet
anode/sdk-php/
âââ src/ # Code source du SDK
â âââ MetadonneesMandatAccesDonneesPDL/ # SDK MĂ©tadonnĂ©es Mandat d'AccĂšs aux DonnĂ©es PDL
â âââ V1/ # Version 1 de l'API
â âââ Dto/ # Data Transfer Objects
â â âââ Mandat.php # Classe principale du mandat
â â âââ Mandat/ # Composants du mandat
â â âââ Parties.php # Parties impliquĂ©es (mandant + mandataire)
â â âââ Parties/ # Types de parties
â â â âââ Partie.php # Classe abstraite de partie
â â â âââ Partie/ # Types concrets de parties
â â â âââ PersonnePhysique.php # Personne physique
â â â âââ PersonneMorale.php # Personne morale
â â â âââ PersonneMorale/ # Sous-composants personne morale
â â â âââ RepresentantLegal.php # ReprĂ©sentant lĂ©gal
â â âââ Objet.php # Objet du mandat
â â âââ Objet/ # Composants de l'objet
â â â âââ Donnees.php # Types de donnĂ©es demandĂ©es
â â â âââ PointsDeLivraison.php # Collection des PDL
â â â âââ PointsDeLivraison/ # Types de PDL
â â â â âââ Prm.php # Point PRM (Ă©lectricitĂ©)
â â â â âââ Pce.php # Point PCE (gaz)
â â â âââ Delegations.php # DĂ©lĂ©gations accordĂ©es
â â âââ Consentement.php # Consentement et validitĂ©
â âââ Handler/ # Gestionnaires
â âââ Pdf.php # Gestionnaire pour fichiers PDF
âââ test/ # Tests unitaires
âââ exemple/ # Exemples d'utilisation
â âââ mandat-acces-donnees-pdl/v1/ # Exemples V1
â âââ lecture-meta-donnees.php # Lecture des mĂ©tadonnĂ©es
â âââ ajout-meta-donnees.php # Ajout de mĂ©tadonnĂ©es
â âââ mandat.pdf # PDF d'exemple
â âââ mandat-src.pdf # PDF source
âââ composer.json # Configuration Composer
Utilisation
1. Lecture des métadonnées depuis un PDF
<?php require __DIR__ . '/vendor/autoload.php'; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Handler\Pdf; // Instancier le gestionnaire PDF $pdfHandler = new Pdf('mandat.pdf'); // Extraire les métadonnées du mandat $mandat = $pdfHandler->getMandat(); // Afficher les données var_dump($mandat);
2. Création et ajout de métadonnées dans un PDF
<?php require __DIR__ . '/vendor/autoload.php'; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Dto\Mandat; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Dto\Mandat\Parties; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Dto\Mandat\Parties\Partie\PersonneMorale; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Dto\Mandat\Parties\Partie\PersonneMorale\RepresentantLegal; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Dto\Mandat\Parties\Partie\PersonnePhysique; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Dto\Mandat\Objet; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Dto\Mandat\Objet\Delegations; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Dto\Mandat\Objet\Donnees; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Dto\Mandat\Objet\PointsDeLivraison; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Dto\Mandat\Objet\PointsDeLivraison\Prm; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Dto\Mandat\Objet\PointsDeLivraison\Pce; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Dto\Mandat\Consentement; use AnodeClub\MetadonneesMandatAccesDonneesPDL\V1\Handler\Pdf; // Créer les parties du mandat $mandant = new PersonneMorale( 'ACME', '123456789', '1 rue de la République, 69001 Lyon', new RepresentantLegal('MARTIN', 'Julien', 'Président', 'julien.martin@domain.ext', '+33123456789') ); $mandataire = new PersonnePhysique( 'DUPONT', 'Jean', '456 avenue des Fournisseurs, 75001 Paris', 'jean.dupont@energy.com', '+33987654321' ); $parties = new Parties($mandant, $mandataire); // Définir l'objet du mandat $donnees = new Donnees( true, // Données techniques true, // Données contractuelles false, // Données d'usage 24 // Période d'historique en mois ); $pointsDeLivraison = (new PointsDeLivraison()) ->add(new Prm('12345678901234')) // PDL électricité ->add(new Pce('GI123456')); // PDL gaz naturel $delegations = (new Delegations()) ->add('Consultation des données de consommation') ->add('Transmission aux fournisseurs d\'énergie'); $objet = new Objet($donnees, $pointsDeLivraison, $delegations); // Définir le consentement $consentement = new Consentement( new \DateTimeImmutable('2024-01-01 12:34:56', new \DateTimeZone('Europe/Paris')), new \DateTimeImmutable('2024-12-31 23:59:59', new \DateTimeZone('Europe/Paris')) ); // Créer le mandat complet $mandat = new Mandat($parties, $objet, $consentement); // Intégrer dans le PDF $pdfHandler = new Pdf('mandat.pdf'); $pdfHandler->setMandat($mandat);
API Principale
DTOs (Data Transfer Objects)
Structure du mandat
Mandat: DTO principal représentant un mandat complet d'accÚs aux donnéesParties: Les parties impliquées dans le mandat (mandant + mandataire)Objet: L'objet du mandat (données demandées, PDL concernés)Consentement: Le consentement donné et sa période de validité
Types de parties
Partie: Classe abstraite représentant une partie au mandatPersonnePhysique: Personne physique (particulier)PersonneMorale: Personne morale (entreprise, association...)RepresentantLegal: Représentant légal de la personne morale
Objet du mandat
Objet: Regroupe ce qui est demandé dans le mandatDonnees: Types de données et permissions d'accÚsPointsDeLivraison: Collection de points de livraison concernésDelegations: Délégations accordées (optionnel)
Composants techniques
PointsDeLivraison: Collection des points de mesurePrm: Point Référence Mesure (électricité)Pce: Point de Comptage et d'Estimation (gaz)
Consentement: Période de validité du mandat
Handlers (Gestionnaires)
Pdf: Gestionnaire pour lire/écrire les métadonnées dans les fichiers PDF
Types de points de livraison
Prm: Point de Reference Mesure (électricité)Pce: Point de Comptage et d'Estimation (gaz)
Exemples d'implémentation
Des exemples complets sont disponibles dans le dossier exemple/ :
lecture-meta-donnees.php: Extraction de métadonnéesajout-meta-donnees.php: Création et intégration de métadonnées
Développement
Scripts disponibles
# Formatage du code (PSR-12) composer run lint # Analyse statique composer run analyse # Tests unitaires composer run test # Couverture de code composer run coverage
Architecture
Le SDK suit une architecture en couches avec une approche orientée métier juridique :
- DTOs : Classes immutables (
readonly) utilisant la terminologie juridique française- Mandat : Le document juridique principal
- Parties : Mandant (qui donne le mandat) et Mandataire (qui le reçoit)
- Objet : Ce qui est demandé dans le mandat
- Consentement : Validation et période de validité
- Handlers : Gestionnaires responsables des opérations sur les fichiers PDF
- Sérialisation : Chaque DTO dispose de méthodes
buildXml()etmakeFromXml()pour la conversion XML
Cette architecture garantit :
- â Terminologie juridique appropriĂ©e (mandant/mandataire, consentement)
- â ImmutabilitĂ© des donnĂ©es (DTOs readonly)
- â SĂ©paration des responsabilitĂ©s (DTOs vs Handlers)
- â Structure intuitive reflĂ©tant le domaine mĂ©tier juridique
Standards
- PSR-4 : Autoloading des classes
- PSR-12 : Style de code
- Compatible PHP 8.1+
- Tests avec PHPUnit
- Analyse statique avec PHPStan
Licence
Ce projet est développé par CNNE pour la gestion des mandats d'accÚs aux données des points de livraison d'énergie.