entelisteam/lbaf-reflection

Lightweight PHP reflection utilities: enum helper, type caster, short class name resolver, cached method parameter lookup.

Maintainers

Package info

github.com/entelisteam/lbaf-reflection

pkg:composer/entelisteam/lbaf-reflection

Transparency log

Statistics

Installs: 8

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

1.2.1 2026-07-03 13:15 UTC

This package is auto-updated.

Last update: 2026-07-11 08:49:49 UTC


README

Lightweight PHP reflection utilities. No runtime dependencies beyond the PHP standard library.

Install

composer require entelisteam/lbaf-reflection

Requires PHP 8.2 or newer.

What's inside

EntelisTeam\Lbaf\Reflection\TypeCaster

Converts a scalar value to a PHP type by name. Accepts both PHP type names (int, bool, float, string) and legacy gettype() names (integer, boolean, double).

use EntelisTeam\Lbaf\Reflection\TypeCaster;

TypeCaster::cast('42', 'int');        // 42
TypeCaster::cast('1', 'bool');        // true
TypeCaster::cast('true', 'bool');     // true (case-insensitive)
TypeCaster::cast(3.14, 'string');     // "3.14"

EntelisTeam\Lbaf\Reflection\EnumHelper

Constructs an enum case from a value. Works for both backed enums (::from()) and unit enums (constant lookup).

use EntelisTeam\Lbaf\Reflection\EnumHelper;

enum Status: string { case Active = 'active'; case Inactive = 'inactive'; }
EnumHelper::formatEnumValue(Status::class, 'active'); // Status::Active

enum Priority { case Low; case High; }
EnumHelper::formatEnumValue(Priority::class, 'Low');  // Priority::Low

For backed enums the value is coerced to the backing type via TypeCaster::cast() first, so '42' will match an int-backed case.

EntelisTeam\Lbaf\Reflection\ClassNameHelper

Returns the short class name (without namespace) with internal caching.

use EntelisTeam\Lbaf\Reflection\ClassNameHelper;

ClassNameHelper::getShortClassName(\App\Foo\Bar::class); // "Bar"

EntelisTeam\Lbaf\Reflection\MethodParameters

Cached lookup of method parameters by name.

use EntelisTeam\Lbaf\Reflection\MethodParameters;

$method = new ReflectionMethod(MyController::class, 'handle');

MethodParameters::getReflection($method, 'id');   // ReflectionParameter for $id
MethodParameters::getTypeName($method, 'id');     // "int" (or "mixed" if untyped)
MethodParameters::getList($method);               // ['id' => ReflectionParameter, ...]

Throws \InvalidArgumentException if the named parameter does not exist.

Версионирование

Все пакеты LBAF следуют SemVer:

  • Major (1.x2.0) — слом обратной совместимости публичного API. Каждое такое изменение сопровождается Rector-миграцией (см. lbaf-rector). Обновляется только вручную: поднять constraint в composer.json и выполнить composer update.
  • Minor (1.21.3) — новая функциональность, обратная совместимость сохранена.
  • Patch (1.2.01.2.1) — исправления без изменения публичного API.

Правило: если изменение требует Rector-миграции — это major, иначе minor или patch.

Зависимости на пакеты LBAF указываются через caret ("entelisteam/lbaf-*": "^1.2"): minor и patch подтягиваются обычным composer update, major автоматически не устанавливается. После обновления Rector-миграции применяются автоматически (хук post-update-cmd); если хук не настроен — выполните composer rector:fix.

License

MIT.