Obj
in package
Хелперы работы с объектами.
Суперсет объектных возможностей illuminate/support
(object_get, class_basename, class_uses_recursive) без магии
и тяжёлой рефлексии symfony/property-access: точечный доступ по цепочке
свойств и геттеров, рекурсивное приведение к массиву, глубокое
клонирование, интроспекция трейтов.
Tags
Table of Contents
Methods
- classBasename() : string
- Короткое имя класса без namespace: `classBasename(App\Models\User::class)` → «User».
- classUses() : array<int, string>
- Все трейты класса, включая трейты родителей и трейты трейтов.
- deepClone() : T
- Глубокое клонирование: вложенные объекты в свойствах и массивах клонируются рекурсивно (в отличие от поверхностного `clone`).
- fill() : T
- Заполнить публичные свойства объекта значениями из массива.
- get() : mixed
- Значение по «точечному» пути через свойства и геттеры: `Obj::get($order, 'customer.address.city', '—')`.
- isInstanceOfAny() : bool
- Является ли объект экземпляром хотя бы одного из классов/интерфейсов.
- toArray() : array<string|int, mixed>
- Рекурсивное приведение объекта к массиву.
Methods
classBasename()
Короткое имя класса без namespace: `classBasename(App\Models\User::class)` → «User».
public
static classBasename(object|class-string $class) : string
Parameters
- $class : object|class-string
-
объект или имя класса
Return values
string —Короткое имя класса без namespace: classBasename(App\Models\User::class) → «User»
classUses()
Все трейты класса, включая трейты родителей и трейты трейтов.
public
static classUses(object|class-string $class) : array<int, string>
Parameters
- $class : object|class-string
-
объект или имя класса
Return values
array<int, string> —уникальные имена трейтов (в порядке обнаружения)
deepClone()
Глубокое клонирование: вложенные объекты в свойствах и массивах клонируются рекурсивно (в отличие от поверхностного `clone`).
public
static deepClone(T $object) : T
Parameters
- $object : T
-
исходный объект
Tags
Return values
T —независимая глубокая копия
fill()
Заполнить публичные свойства объекта значениями из массива.
public
static fill(T $object, array<string, mixed> $values) : T
Неизвестные ключи игнорируются (fail-safe против массового присваивания несуществующих свойств).
Parameters
- $object : T
-
целевой объект
- $values : array<string, mixed>
-
значения по именам свойств
Tags
Return values
T —тот же объект (для цепочек)
get()
Значение по «точечному» пути через свойства и геттеры: `Obj::get($order, 'customer.address.city', '—')`.
public
static get(object|array<string|int, mixed> $target, string $path[, mixed $default = null ]) : mixed
Каждый сегмент пробуется по порядку: публичное свойство →
аксессор getSegment()/isSegment()/hasSegment() → ключ
массива/ArrayAccess. Произвольные методы по имени сегмента
не вызываются (fail-safe против путей из недоверенного ввода).
Обрыв цепочки (null или отсутствие сегмента) возвращает default.
Parameters
- $target : object|array<string|int, mixed>
-
объект или массив
- $path : string
-
путь «a.b.c»
- $default : mixed = null
-
значение при обрыве цепочки
Return values
mixed —Значение по «точечному» пути через свойства и геттеры:
isInstanceOfAny()
Является ли объект экземпляром хотя бы одного из классов/интерфейсов.
public
static isInstanceOfAny(object $object, array<int, class-string> $classes) : bool
Parameters
- $object : object
-
проверяемый объект
- $classes : array<int, class-string>
-
классы или интерфейсы
Return values
bool —Является ли объект экземпляром хотя бы одного из классов/интерфейсов
toArray()
Рекурсивное приведение объекта к массиву.
public
static toArray(object $object[, int $maxDepth = 16 ]) : array<string|int, mixed>
JsonSerializable уважается; для прочих объектов берутся публичные
свойства. Вложенные объекты и массивы обходятся рекурсивно
с ограничением глубины (fail-safe от циклов).
Parameters
- $object : object
-
объект
- $maxDepth : int = 16
-
предельная глубина рекурсии