Oihana PHP

set.php

Table of Contents

Functions

set()  : object
Sets a value in an object using a key path.

Functions

set()

Sets a value in an object using a key path.

set(object $object, string|null $key, mixed $value[, string $separator = '.' ][, bool $copy = false ][, array<string|int, mixed>|string|callable|null $classFactory = null ]) : object

Supports dot notation for nested properties. Intermediate objects are created if needed.

Parameters
$object : object

The object to modify (or copy).

$key : string|null

The key path to set (e.g. 'user.address.country'). If null, replaces entire object.

$value : mixed

The value to set.

$separator : string = '.'

The separator used in the key path. Default is '.'.

$copy : bool = false

If true, returns a deep copy of the object with the modification.

$classFactory : array<string|int, mixed>|string|callable|null = null

A class name, factory callable, or array path => className to create intermediate objects (default: stdClass).

Tags
example
  1. Basic usage with nested keys and default stdClass
$obj = new \stdClass();
$obj = set($obj, 'user.profile.name', 'Alice');
echo $obj->user->profile->name; // Alice
  1. Replace the entire object when key is null
$original = (object)['foo' => 'bar'];
$new = set($original, null, ['x' => 123]);
echo $new->x; // 123
  1. Use a custom class as intermediate objects
class Node { public string $label = ''; }
$obj = set(new Node(), 'tree.branch.leaf', 'green', '.', false, Node::class);
echo $obj->tree->branch->leaf; // green
  1. Use a factory callable
$factory = fn() => new class { public string $value = ''; };
$obj = set(new \stdClass(), 'x.y.z', 99, '.', false, $factory);
echo $obj->x->y->z; // 99
  1. Use an array of path => class mappings
class Address { public string $city = ''; }
class User    { public string $name = ''; }
$obj = new \stdClass();
$obj = set($obj, 'user.address.city', 'Paris', '.', false, [
'user' => User::class,
'user.address' => Address::class,
]);
echo $obj->user->address->city; // Paris
author

Marc Alcaraz (ekameleon)

since
1.0.0
Return values
object

The modified (or copied and modified) object.


        
On this page

Search results