zero-to-prod/dynamic-setter

Fluently set class properties with dynamic methods.

v71.0.2 2024-10-18 13:46 UTC

This package is auto-updated.

Last update: 2024-11-25 09:08:02 UTC


README

Repo GitHub Actions Workflow Status Packagist Downloads Packagist Version GitHub repo size License

Fluently set class properties with dynamic methods.

Installation

To install this package run composer install:

composer require zerotoprod/dynamic-setter

Usage

The DynamicSetter trait allows you to easily create class instances and dynamically set properties through method chaining. It provides a simple way to manage object instantiation and property setting with set_* methods.

To use the DynamicSetter trait, include it in your class and define the properties you want to set dynamically.

use Zerotoprod\StreamContext\DynamicSetter;

class User
{
    use DynamicSetter;

    public $name;
    public $email;
}

$user = User::new()
    ->set_name('John Doe')
    ->set_email('john.doe@example.com');

echo $user->name;  // Output: John Doe
echo $user->email; // Output: john.doe@example.com

Nested Objects

You can also use the DynamicSetter trait in classes that contain other objects, allowing you to set properties in a nested structure.

class Address
{
    use DynamicSetter;

    public $city;
    public $postalCode;
}

class Customer
{
    use DynamicSetter;

    public $name;
    public $address;
}

$customer = Customer::new()
    ->set_name('Jane Doe')
    ->set_address(
        Address::new()
            ->set_city('New York')
            ->set_postalCode('10001')
    );

echo $customer->name;                   // Output: Jane Doe
echo $customer->address->city;          // Output: New York
echo $customer->address->postalCode;    // Output: 10001