laravel-utils maintained by andydefer
Description
Utility package for Laravel including Transformable proxies and helpers
Author
Last update
2026/08/01 17:05
(dev-main)
License
Downloads
1
Laravel Utils
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