eirwego/license

Library to manage Eirwego license

Installs: 10

Dependents: 1

Suggesters: 0

Security: 0

pkg:composer/eirwego/license

v0.1.0 2019-02-27 13:53 UTC

This package is auto-updated.

Last update: 2026-01-16 15:17:57 UTC


README

Bibliothèque PHP simple pour la gestion de licences Eirwego. Cette bibliothèque encapsule les informations d'une licence dans une classe PHP avec support de la sérialisation JSON.

📖 Vue d'ensemble

Ce repository contient une bibliothèque PHP simple pour la gestion de licences Eirwego. Il s'agit d'une bibliothèque minimale qui encapsule les informations d'une licence dans une classe PHP.

Cette bibliothèque est une implémentation simple et fonctionnelle pour gérer des licences Eirwego. Elle remplit son objectif principal mais pourrait bénéficier d'améliorations en termes de tests, documentation et modernisation (PHP 8+).

📋 Table des matières

🚀 Installation

Via Composer

composer require eirwego/license

Exigences

  • PHP : 7.1 ou supérieure
  • Extension : ext-json (requis)

💻 Utilisation

Création d'une licence

use Eirwego\License;

// Création avec tous les paramètres
$license = new License(10, 'premium', 'https://example.com/license');

// Création avec valeurs par défaut
$license = new License(); // seats=0, type=null, url=null

// Création partielle
$license = new License(5, 'basic');

Accès aux propriétés

// Getters
echo $license->getSeats(); // 10
echo $license->getType();  // 'premium'
echo $license->getUrl();   // 'https://example.com/license'

Modification des propriétés

// Setters
$license->setSeats(20);
$license->setType('enterprise');
$license->setUrl('https://example.com/new-license');

Sérialisation JSON

// Via json_encode() (implémente JsonSerializable)
$json = json_encode($license);
// Résultat: {"seats":10,"type":"premium","url":"https://example.com/license"}

// Via __toString()
echo (string)$license; // Même résultat

📚 API Reference

Classe License

Constructeur

public function __construct(int $seats = 0, ?string $type = null, ?string $url = null)

Crée une nouvelle instance de License.

Paramètres :

  • $seats (int) : Nombre de sièges/licences disponibles (défaut: 0)
  • $type (string|null) : Type de licence (défaut: null)
  • $url (string|null) : URL associée à la licence (défaut: null)

Méthodes

Getters
  • getSeats(): int - Retourne le nombre de sièges
  • getType(): ?string - Retourne le type de licence
  • getUrl(): ?string - Retourne l'URL de la licence
Setters
  • setSeats(int $seats) - Définit le nombre de sièges
  • setType(string $type) - Définit le type de licence
  • setUrl(string $url) - Définit l'URL de la licence
Sérialisation
  • jsonSerialize(): array - Retourne un tableau pour la sérialisation JSON
  • __toString(): string - Retourne la représentation JSON de l'objet

📁 Structure du projet

license.lib/
├── composer.json          # Configuration Composer
├── README.md              # Documentation
└── src/
    └── License.php        # Classe principale de la bibliothèque

Namespace

  • Namespace : Eirwego
  • Autoloading : PSR-4 (Eirwego\src/)

✨ Caractéristiques

Points forts

Code propre et simple : Structure claire et facile à comprendre
Type safety : Utilisation de types stricts et de type hints
PSR-4 : Respect des standards d'autoloading
JsonSerializable : Support natif de la sérialisation JSON
Documentation : PHPDoc présent pour les propriétés

Propriétés

La classe License contient trois propriétés :

  1. $seats (int) : Nombre de sièges/licences disponibles
  2. $type (string|null) : Type de licence
  3. $url (string|null) : URL associée à la licence

Implémentations

  • JsonSerializable : Permet la sérialisation JSON native
  • Strict types : Utilisation de declare(strict_types=1)

🔍 Analyse détaillée

1. Configuration Composer (composer.json)

Informations du package :

  • Nom : eirwego/license
  • Description : Library to manage Eirwego license
  • Type : library
  • Licence : MIT
  • Auteur : Alexandre Lahure (alexandre@lahu.re)

Dépendances :

  • PHP : ~7.1 (version 7.1 ou supérieure, mais inférieure à 8.0)
  • Extension : ext-json (requis)

Dépendances de développement :

  • friendsofphp/php-cs-fixer : Outil de formatage de code
  • phpstan/phpstan : Analyseur statique de code PHP

Autoloading :

  • Namespace PSR-4 : Eirwego\src/

2. Classe License (src/License.php)

Caractéristiques principales :

  • Namespace : Eirwego
  • Implémente : JsonSerializable (permet la sérialisation JSON)
  • Strict types : Activé (declare(strict_types=1))

Propriétés :

  1. $seats (int) : Nombre de sièges/licences disponibles
  2. $type (string|null) : Type de licence
  3. $url (string|null) : URL associée à la licence

Méthodes publiques :

  • Constructeur : __construct(int $seats = 0, ?string $type = null, ?string $url = null)

    • Permet d'initialiser une licence avec des valeurs par défaut
  • Getters :

    • getSeats(): int
    • getType(): ?string
    • getUrl(): ?string
  • Setters :

    • setSeats(int $seats)
    • setType(string $type)
    • setUrl(string $url)
  • Sérialisation :

    • __toString() : Retourne la représentation JSON de l'objet
    • jsonSerialize(): array : Implémente l'interface JsonSerializable

⚠️ Points d'amélioration potentiels

⚠️ Version PHP obsolète : Requiert PHP 7.1 (version EOL depuis 2019)
⚠️ Pas de tests : Aucun fichier de test (PHPUnit) présent
⚠️ Pas de README : Documentation manquante pour les utilisateurs (maintenant résolu)
⚠️ Pas de validation : Aucune validation des données dans les setters
⚠️ Pas de méthodes utilitaires : Pas de méthodes pour comparer, cloner, etc.
⚠️ Setters sans type de retour : Les setters ne retournent pas self (fluent interface)
⚠️ Gestion d'erreurs : __toString() utilise ?: '' mais ne gère pas les erreurs JSON

💡 Recommandations

  1. Mettre à jour PHP : Passer à PHP 8.0+ minimum
  2. Ajouter des tests : Créer une suite de tests PHPUnit
  3. Ajouter un README : Documenter l'utilisation de la bibliothèque (maintenant résolu)
  4. Améliorer les setters : Retourner self pour permettre le chaînage
  5. Ajouter de la validation : Valider les valeurs dans les setters (ex: $seats >= 0)
  6. Ajouter des méthodes utilitaires : equals(), isEmpty(), etc.
  7. Gérer les erreurs JSON : Améliorer la gestion d'erreurs dans __toString()

⚙️ Exigences

Dépendances

  • PHP : ~7.1 (version 7.1 ou supérieure, mais inférieure à 8.0)
  • Extension : ext-json (requis)

Dépendances de développement

  • friendsofphp/php-cs-fixer : Outil de formatage de code
  • phpstan/phpstan : Analyseur statique de code PHP

📝 Informations du package

  • Nom : eirwego/license
  • Description : Library to manage Eirwego license
  • Type : library
  • Licence : MIT
  • Auteur : Alexandre Lahure (alexandre@lahu.re)

📄 Licence

Ce projet est sous licence MIT. Voir le fichier de licence dans le code source pour plus de détails.

The MIT License

Copyright 2019 Alexandre Lahure <alexandre@lahu.re>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

📊 Conclusion

Cette bibliothèque est une implémentation simple et fonctionnelle pour gérer des licences Eirwego. Elle remplit son objectif principal mais pourrait bénéficier d'améliorations en termes de tests, documentation et modernisation (PHP 8+).

Pour plus de détails sur l'analyse complète du repository, consultez le fichier RAPPORT.md.