Projectsphp-data

PHP Data

Package

Lightweight, framework-agnostic Data Transfer Object (DTO) library with first-class Laravel integration.

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

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.