objects
Table of Contents
Functions
- compress() : object
- Compress the given object by removing properties that match certain conditions.
- ensureObjectPath() : object
- Ensures that a given property of an object is initialized as an object.
- filter() : object
- Keeps the public properties of an object that satisfy a predicate.
- freeze() : array<int|string, mixed>
- Builds a plain associative array snapshot of the given properties of an object.
- hasAllProperties() : bool
- Check if all of the given properties exist in the object.
- hasAnyProperty() : bool
- Check if at least one of the given properties exists in the object.
- keys() : array<int, string>
- Returns the list of public property names of an object.
- map() : object
- Transforms every public property value of an object through a callback.
- omit() : object
- Removes the specified public properties from an object.
- pick() : object
- Keeps only the specified public properties of an object.
- set() : object
- Sets a value in an object using a key path.
- setObjectValue() : object
- Sets a value in a flat object using a single property name.
- toAssociativeArray() : array<string|int, mixed>
- Recursively converts an object (or array) into a full associative array.
- values() : array<int, mixed>
- Returns the list of public property values of an object.
Functions
compress()
Compress the given object by removing properties that match certain conditions.
compress(object $object[, array{clone?: bool, conditions?: callable|array|string|null, depth?: null|int, excludes?: array|null, recursive?: bool, removeKeys?: array|null, throwable?: bool} $options = [] ][, int $currentDepth = 0 ]) : object
This function traverses the object and removes properties according to the provided options. It can operate recursively on nested objects and arrays.
Parameters
- $object : object
-
The object to compress.
-
$options
: array{clone?: bool, conditions?: callable|array
|string|null, depth?: null|int, excludes?: array = []|null, recursive?: bool, removeKeys?: array |null, throwable?: bool} -
Optional configuration.
- $currentDepth : int = 0
-
Internal counter used to track recursion depth.
Tags
Return values
object —The compressed object, with properties removed according to the rules.
ensureObjectPath()
Ensures that a given property of an object is initialized as an object.
& ensureObjectPath(object &$current, string $segment) : object
If the property does not exist or is not an object, it will be replaced with a new stdClass instance. The function returns a reference to the nested object, allowing direct modification.
This is useful when building or navigating nested object structures dynamically.
Parameters
- $current : object
-
The current object in which the property is ensured.
- $segment : string
-
The property name to ensure as an object.
Tags
Return values
object —A reference to the ensured nested object (stdClass).
filter()
Keeps the public properties of an object that satisfy a predicate.
filter(object $object, callable $fn) : object
Returns a new stdClass containing only the properties for which
fn( $value , $key ) returns a truthy value. The source object is never modified.
Parameters
- $object : object
-
The source object.
- $fn : callable
-
The predicate callback:
fn( $value , $key ): bool.
Tags
Return values
object —A new stdClass with only the kept properties.
freeze()
Builds a plain associative array snapshot of the given properties of an object.
freeze(object $object, array<int|string, string> $fields[, int $flags = CleanFlag::NULLS ][, bool $deep = false ]) : array<int|string, mixed>
Typical use case: freezing a reference to another document. A caller names a record, the server re-reads it and copies the properties it chooses onto the current document, so the snapshot survives later changes to the source.
Property selection and renaming
Each entry of $fields is the name of a source property. When the entry carries a
string key, that key becomes the name of the property in the snapshot — which lets
a name property land as thingName on the carrying document:
[ '_key' , 'url' , 'thingName' => 'name' ]
Reading
Properties are read with $object->{ $field } ?? null, so magic __get() / __isset()
accessors are honoured — unlike pick(), which relies on get_object_vars().
A property that is missing, uninitialized or inaccessible therefore reads as null,
and is dropped as long as $flags discards nulls (which the default does).
Filtering
The collected values are handed to clean() with $flags, so the whole
CleanFlag vocabulary applies. The default, CleanFlag::NULLS, only discards null —
0, 0.0, '', false and [] are kept. Note that CleanFlag::TRIM is a modifier of
CleanFlag::EMPTY and does nothing on its own, and that CleanFlag::FALSY short-circuits
NULLS / EMPTY / TRIM and never applies to arrays. CleanFlag::RETURN_NULL is rejected:
this function always returns an array.
Depth
By default an object value is copied by handle, so the snapshot keeps sharing the
instance with the source. Pass $deep = true to convert every object or array value
into a plain associative array with toAssociativeArray(), which makes the
snapshot genuinely inert.
The returned array follows the order of $fields, not the declaration order of the
object. The source object is never modified.
Parameters
- $object : object
-
The source object.
- $fields : array<int|string, string>
-
The properties to copy. An integer key means the source name is reused as-is ; a string key renames the property in the snapshot.
- $flags : int = CleanFlag::NULLS
-
A bitmask of CleanFlag values applied to the collected values. Defaults to
CleanFlag::NULLS. - $deep : bool = false
-
If true, object and array values are converted into plain associative arrays. Defaults to false.
Tags
Return values
array<int|string, mixed> —The frozen snapshot, in the order of $fields. Keys are the
property names, except for the numeric ones that PHP casts to
integers, as in any array.
hasAllProperties()
Check if all of the given properties exist in the object.
hasAllProperties(object $object, array<int, string> $properties[, bool $notNull = false ]) : bool
If $notNull is set to true, each property must also be non-null.
Parameters
- $object : object
-
The object to inspect
- $properties : array<int, string>
-
List of property names to check
- $notNull : bool = false
-
Whether to check for non-null values (default: false)
Tags
Return values
bool —True if all properties exist (and are not null if $notNull = true)
hasAnyProperty()
Check if at least one of the given properties exists in the object.
hasAnyProperty(object $object, array<int, string> $properties[, bool $notNull = false ]) : bool
If $notNull is set to true, the property must also be non-null.
Parameters
- $object : object
-
The object to inspect
- $properties : array<int, string>
-
List of property names to check
- $notNull : bool = false
-
Whether to check for non-null values (default: false)
Tags
Return values
bool —True if at least one property exists (and is not null if $notNull = true)
keys()
Returns the list of public property names of an object.
keys(object $object) : array<int, string>
Only the accessible (public and dynamic) properties are returned, in declaration order, mirroring the behaviour of get_object_vars() from outside the class.
Parameters
- $object : object
-
The source object.
Tags
Return values
array<int, string> —A list of the object's public property names.
map()
Transforms every public property value of an object through a callback.
map(object $object, callable $fn) : object
Returns a new stdClass with the same property names, each value replaced by the
result of fn( $value , $key ). The source object is never modified.
Parameters
- $object : object
-
The source object.
- $fn : callable
-
The mapping callback:
fn( $value , $key ): mixed.
Tags
Return values
object —A new stdClass with mapped values.
omit()
Removes the specified public properties from an object.
omit(object $object, array<int, string> $keys) : object
Returns a new stdClass containing every public property of the source object
except the listed ones. The source object is never modified. This is the inverse
of pick().
Parameters
- $object : object
-
The source object.
- $keys : array<int, string>
-
The list of property names to remove.
Tags
Return values
object —A new stdClass without the omitted properties.
pick()
Keeps only the specified public properties of an object.
pick(object $object, array<int, string> $keys) : object
Returns a new stdClass containing only the listed properties that actually exist
on the source object. The source object is never modified. Keys that are absent are
silently ignored.
Parameters
- $object : object
-
The source object.
- $keys : array<int, string>
-
The list of property names to keep.
Tags
Return values
object —A new stdClass with only the picked properties.
set()
Sets a value in an object using a key path.
set(object $object, string|null $key, mixed $value[, non-empty-string $separator = '.' ][, bool $copy = false ][, array<string, class-string>|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 : non-empty-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, class-string>|string|callable|null = null
-
A class name, factory callable, or array path => className to create intermediate objects (default: stdClass).
Tags
Return values
object —The modified (or copied and modified) object.
setObjectValue()
Sets a value in a flat object using a single property name.
setObjectValue(object $document, string $key, mixed $value) : object
This helper function assigns the given value to the specified property of the provided object. It does not support nested paths or separators.
The object is returned with the updated property.
Parameters
- $document : object
-
The object to modify.
- $key : string
-
The property name to set.
- $value : mixed
-
The value to assign to the property.
Tags
Return values
object —The modified object with the new or updated property.
toAssociativeArray()
Recursively converts an object (or array) into a full associative array.
toAssociativeArray(array<int|string, mixed>|object $document[, string|array<int, object|string>|object|null $encoder = null ][, bool $strict = false ]) : array<string|int, mixed>
This function handles nested objects, ensuring the entire array or object tree is converted.
Note that only public properties of the object will be included in the resulting array.
Parameters
- $document : array<int|string, mixed>|object
-
An array or object to convert to a deep associative array .
- $encoder : string|array<int, object|string>|object|null = null
-
Optional JSON encoder reference. This value is resolved into a callable using resolveCallable(). Supported forms:
- Closure or invokable object
- Callable array: [$object, 'method'] or ['Class', 'method']
- Named function: 'my_json_encoder'
- Static method string: 'MyClass::encode'
- null to use native json_encode()
The resolved callable must have the signature:
function(mixed $data): string - $strict : bool = false
-
If strict, not use json_encode but a standard loop.
Tags
Return values
array<string|int, mixed> —The resulting associative array.
values()
Returns the list of public property values of an object.
values(object $object) : array<int, mixed>
Only the accessible (public and dynamic) property values are returned, in declaration order, mirroring the behaviour of get_object_vars() from outside the class.
Parameters
- $object : object
-
The source object.
Tags
Return values
array<int, mixed> —A list of the object's public property values.