承接 anode-club/sdk-php 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

anode-club/sdk-php

Composer 安装命令:

composer require anode-club/sdk-php

包简介

SDK PHP de l'ANODE

README 文档

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ées
    • Parties : 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 mandat
    • PersonnePhysique : 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 mandat
    • Donnees : Types de données et permissions d'accès
    • PointsDeLivraison : Collection de points de livraison concernés
    • Delegations : Délégations accordées (optionnel)

Composants techniques

  • PointsDeLivraison : Collection des points de mesure
    • Prm : 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/ :

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() et makeFromXml() 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.

统计信息

  • 总下载量: 652
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-04-10

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固