Skip to content

Repository files navigation

Typhoon Reflection

PHP Version RequirementGitHub ReleasePsalm LevelPsalm Type CoverageCode CoverageMutation testing badge

Typhoon Reflection is an alternative to native PHP Reflection. It is:

Installation

composer require typhoon/reflection typhoon/phpstorm-reflection-stubs

typhoon/phpstorm-reflection-stubs is a bridge for jetbrains/phpstorm-stubs. Without this package internal classes and functions are reflected from native reflection without templates.

Basic Usage

useTyphoon\Reflection\TyphoonReflector;
useTyphoon\Type\types;
usefunctionTyphoon\Type\stringify;
/** * @template TTag of non-empty-string */finalreadonlyclass Article
{
/** * @param list<TTag> $tags */publicfunction__construct(
privatearray$tags,
) {}
}
$reflector = TyphoonReflector::build();
$class = $reflector->reflectClass(Article::class);
$tagsType = $class->properties()['tags']->type();
var_dump(stringify($tagsType)); // "list<TTag#Article>"$templateResolver = $class->createTemplateResolver([
types::union(
types::string('PHP'),
types::string('Architecture'),
),
]);
var_dump(stringify($tagsType->accept($templateResolver))); // "list<'PHP'|'Architecture'>"

Documentation

Documentation is still far from being complete. Don't hesitate to create issues to clarify how things work.

About

Static PHP reflection with phpDoc support

Topics

Resources

Stars

40 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages