Download the PHP package lgouttefange/beavor without Composer
On this page you can find all versions of the php package lgouttefange/beavor. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download lgouttefange/beavor
More information about lgouttefange/beavor
Files in lgouttefange/beavor
Package beavor
Short Description Lightweight library to cast array/std classes (generally as a result fo an api response) to a DTO class
License
Informations about the package beavor
Not speaking Baguette ? Find the english doc right there
Beavor
Parce qu'ils voulaient pas que que je l'appelle PerCaster
Beavor ça fait quoi
Ca permet d'éviter ça
En castant un retour d'API (ou n'importe quel array / stdClass en fait) en un DTO réalisé juste avant.
Avantages
- Pas de manipulations de tableaux / d'objets
- Si la propriété existe dans le DTO, sa valeur sera définie
- Le DTO ne reçoit pas de propriétés supplémentaires
- Fini les undefined index '...'
- Définition unique des retours d'API
- Gain de clarté
- Manipulation OO possibles
- Fonctionne avec des champs publics ou avec des setters
- Possibilité de fonctionner avec des accesseurs/mutateurs
Utilisation
Pour rappel : un exemple d'usage tout simple :
Ou on peut appeler statiquement (dans les TODO : gérer avec PHPdoc ou autre un moyen de pas afficher le warning) :
En passant une nouvelle instance de la classe DTO :
Ou bien la classe même (auquel cas assurez vous d'avoir un constructeur optionnel) :
En passant un tableau :
Ou un objet :
Ou même le JSON brut :
Ou un objet :
Un DTO peut contenir d'autres DTO :
Si le DTO enfant n'est pas défini dans la classe, alors on a un stdClass :
Pour définir le DTO enfant, utilisez l'annotation de PhpDoc sur le champ concerné :
Ca fonctionne aussi avec les collections d'objet :
Le DTO
Exemple de DTO :
- Le caster utilise en priorité les setters (ex: le dummySetterProperty)
- Cependant vous pouvez définir la propriété publique et ne pas définir de setter (ex: le dummyProperty)
- Si la propriété est protégée et sans setter, elle ne sera jamais touchée (ex: le unaccessibleProperty)
- Lors du casting aucune propriété n'est rajoutée au DTO. Il n'a que ce qui lui est défini
Generation de DTO
Si vous avez beaucoup de champs dans votre DTO, que vous avez beaucoup de classes, ou les deux, utilisez le script de génération de DTO !
On vous demandera :
- Le nom de classe (ex: CniUploadResponseDto)
- Le namespace (ex: \Beavor\Dto)
- Le JSON minifié de la réponse à transformer
Les fichiers seront automatiquement générés dans votre arborescence directement, avec une détection des racines PSR-4 pour que vous n'ayez plus rien à toucher.
Par défaut, tous les Dto sont générés avec des getters et des champs publics.
All versions of beavor with dependencies
symfony/console Version >=3.0
nette/php-generator Version ^2.6