GitHub

php-datatypes

php-datatypes

Éléments constitutifs du DDD pour PHP : un trait testé par attribut, ainsi que des objets de valeur immuables de type Str/int/float, Slug, Url, EmailAddress, Money et datetime. Sans framework ni dépendance tierce.

Types de données PHP

PHP Datatypes construit vos objets de valeur, entités et agrégats à partir de traits prédéfinis et testés (un par attribut), laissant ainsi la définition de classe libre pour la logique métier qui lui appartient.

Les accesseurs renvoient des objets valeur plutôt que des types primitifs chaque fois que cela est possible. Ainsi, chaque valeur bénéficie de sa propre validation et normalisation, évitant à chaque appelant de devoir s'en souvenir. Aucune dépendance tierce n'est requise en dehors de PHP ; ces valeurs fonctionnent donc sans framework, requête HTTP ni moteur de templates.

  • AbstractValueObject - la base dont un objet valeur, une entité ou un agrégat étend la construction à partir d'un tableau, une sérialisation complète et toArray() prêt à l'emploi.
  • Traits d'entité - un trait par attribut ( HasPositiveIntegerIDTrait , HasActiveTrait , HasNameTrait , ... ), chacun portant les indications de type et la normalisation pour cet attribut.
  • Types de données scalaires - wrappers immuables Str , entiers et flottants, avec une API fluide qui renvoie une nouvelle instance à chaque opération plutôt que de modifier la valeur sur place.
  • Types de données Web - Slug , Url et EmailAddress , chacun se validant et se normalisant lui-même.
  • Types de données datetime - valeurs de date et d'heure, sans avoir recours à une bibliothèque de dates et d'heures.
  • Vocabulaire des exceptions - une exception typée par type de données en dessous Exceptions\Datatypes\* , de sorte qu'une valeur rejetée indique ce qu'elle a rejeté et pourquoi.

Portée

Ce paquet contient des types de données : des valeurs qui s’auto-valident et se normalisent, et que toute application PHP peut utiliser sans framework, requête HTTP ni moteur de templates. La règle « Aucune dépendance tierce » est autant une règle de portée qu’une règle de dépendance.

Les comportements liés au rendu, à l'analyse de documents ou à l'affichage d'une page web ne constituent pas un type de données et relèvent du package hradigital/php-markup . php-markup dépend de ce package, et non l'inverse.

Voir le projet