ReflectionClass
Сведения о классе: его методы, свойства, атрибуты.
Синтаксис
new ReflectionClass(object|string $objectOrClass)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| $objectOrClass | object|string | Объект или имя класса. |
Возвращаемое значение
ReflectionClassОбъект с методами `getShortName()`, `getMethods()`, `getProperties()`, `getAttributes()`, `newInstanceArgs()`.
Примеры
Что есть у класса:
<?php
class Product
{
public function __construct(public string $title, protected int $price) {}
public function price(): int
{
return $this->price;
}
}
$class = new ReflectionClass(Product::class);
echo $class->getShortName(), "\n";
echo implode(', ', array_map(fn ($p) => $p->getName(), $class->getProperties())), "\n";
echo implode(', ', array_map(fn ($m) => $m->getName(), $class->getMethods()));Результат:
Product
title, price
__construct, priceПримечания
На отражении построены фреймворки: так они находят атрибуты маршрутов и узнают, какие зависимости передать в конструктор. В обычном коде оно нужно редко.
См. также
- get_class_methods — Возвращает имена методов класса.
- class_exists — Проверяет, определён ли класс.
- get_class — Возвращает имя класса объекта.
В учебнике
- Современный синтаксис — Возможности PHP 8 — оператор ?->, деструктуризация массивов, оператор распаковки, readonly-классы, ссылка на функцию и атрибуты.