Looking to hire Laravel developers? Try LaraJobs

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
Links
Downloads
1

Comments
comments powered by Disqus

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

  1. Forker le projet
  2. Créer une branche (git checkout -b feature/ma-fonctionnalite)
  3. Commiter les changements (git commit -m 'Ajout de ma fonctionnalité')
  4. Pusher (git push origin feature/ma-fonctionnalite)
  5. Ouvrir une Pull Request

Licence

MIT © Andy Defer

Auteur

Dépendances

  • andydefer/domain-structures - Interfaces et classes de base pour les objets transformables
  • illuminate/database - Pour les attributs Eloquent