andydefer / laravel-utils
Utility package for Laravel including Transformable proxies and helpers
v0.3.0
2026-08-01 10:58 UTC
Requires
- php: ^8.1
- andydefer/laravel-repository: ^2.14
- laravel/framework: ^12.0|^13.0|^14.0|^15.0
Requires (Dev)
- laravel/pint: ^1.29
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.0|^10.0
- phpunit/phpunit: ^10.5|^11.0|^12.0
README
Description
Package d'utilitaires pour Laravel offrant des proxies pour l'hydratation automatique d'objets Transformable (Value Objects, Records, DTOs) depuis des sources variées (tableaux, JSON, colonnes de base de données).
Installation
composer require andydefer/laravel-utils
Prérequis
- PHP 8.1 ou supérieur
- Laravel 10.x, 11.x ou 12.x
andydefer/domain-structures^1.0
Fonctionnalités
TransformableProxy
Proxy statique pour créer des objets Transformable depuis diverses sources :
use AndyDefer\LaravelUtils\Proxies\TransformableProxy; use App\ValueObjects\SlugVO; // Depuis une chaîne $slug = TransformableProxy::make(SlugVO::class, 'mon-slug'); // Depuis un tableau $user = TransformableProxy::make(UserRecord::class, [ 'name' => 'John Doe', 'email' => 'john@example.com', ]); // Depuis du JSON $product = TransformableProxy::make(ProductRecord::class, '{"name":"Laptop","price":999}'); // Avec nullable $coordinates = TransformableProxy::make(CoordinatesVO::class, null, nullable: true);
AttributeProxy
Proxy pour créer des attributs Eloquent qui hydratent automatiquement des objets Transformable :
use AndyDefer\LaravelUtils\Proxies\AttributeProxy; use App\ValueObjects\SlugVO; use App\ValueObjects\CoordinatesVO; use App\Records\SettingsRecord; class User extends Model { // Attribut simple protected function slug(): Attribute { return AttributeProxy::make(SlugVO::class); } // Attribut nullable protected function coordinates(): Attribute { return AttributeProxy::nullable(CoordinatesVO::class); } // Attribut avec colonne différente protected function settings(): Attribute { return AttributeProxy::make(SettingsRecord::class, column: 'metadata'); } } // Utilisation $user = User::find(1); echo $user->slug->value; // 'john-doe' echo $user->coordinates->lat; // 48.8566 echo $user->settings->theme; // 'dark'
Documentation
Tests
composer test
Contribuer
- Forker le projet
- Créer une branche (
git checkout -b feature/ma-fonctionnalite) - Commiter les changements (
git commit -m 'Ajout de ma fonctionnalité') - Pusher (
git push origin feature/ma-fonctionnalite) - Ouvrir une Pull Request
Licence
MIT © Andy Defer
Auteur
- Andy Defer - GitHub
Dépendances
andydefer/domain-structures- Interfaces et classes de base pour les objets transformablesilluminate/database- Pour les attributs Eloquent