Laravel Data
A lightweight, framework-agnostic Data Transfer Object (DTO) library for PHP, with first-class Laravel integration.
use BradieTilley\Data\Data;
class ProductData extends Data
{
public function __construct(
public string $title,
public int $reviews,
public float $rating,
) {}
}
// Hydrate from an array, model, DTO, stdClass, or JSON string
$product = ProductData::from(['title' => 'Widget', 'reviews' => 5, 'rating' => 4.5]);
// Or construct explicitly with named arguments
$product = ProductData::make(title: 'Widget', reviews: 5, rating: 4.5);
// Serialize
$product->toArray(); // ['title' => 'Widget', 'reviews' => 5, 'rating' => 4.5]
Documentation
- Introduction
- Installation
- Data Objects
- Hydration
- Serialization
- Nested & Collection Data
- Optional, Lazy & Computed
- Casts & Transformers
- Name Mapping
- Laravel Integration
- Predefined DTOs
- Code Generation
- Framework-agnostic usage
- Compatibility
Requirements
- PHP 8.3+
- Laravel 13+ (optional — the core runs on plain PHP)
Quick start
composer require bradietilley/laravel-data
use BradieTilley\Data\Data;
class ProductData extends Data
{
public function __construct(
public string $title,
public int $reviews,
public float $rating,
) {}
}
$product = ProductData::from(['title' => 'Widget', 'reviews' => 5, 'rating' => 4.5]);
See Installation and Data Objects for full walkthroughs.