Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Reflection Laravel Package

typhoon/reflection

Static, fast alternative to PHP’s native Reflection. Reflects code without running or autoloading it, uses lazy loading + caching, and stays compatible with native reflection. Supports Psalm/PHPStan phpDoc types, template resolution, and avoids memory leaks (safe with zend.enable_gc=0).

View on GitHub
Deep Wiki
Context7

Static PHP reflection with phpDoc support

Frequently asked questions about Reflection
How does Typhoon Reflection improve Laravel’s service container performance?
Typhoon Reflection replaces runtime reflection in Laravel’s `Container::build()` with static analysis, reducing overhead during dependency resolution. This is especially useful for high-traffic APIs or microservices where container binding resolution happens frequently. The package provides native adapters to integrate seamlessly with Laravel’s existing reflection usage, so no major refactoring is needed.
Can I use Typhoon Reflection with Laravel’s Eloquent ORM?
Yes, Typhoon Reflection can optimize Eloquent metadata caching by statically analyzing model classes (e.g., `getMorphClass()`, `getTable()`). Since it supports PhpDoc types, it works well with Laravel’s annotation-driven features. However, test edge cases like dynamic model binding or custom traits to ensure compatibility with your ORM setup.
Will Typhoon Reflection work with Laravel’s route model binding?
Absolutely. You can pre-compute route model binding metadata statically using Typhoon Reflection, reducing runtime reflection calls during request handling. This is particularly beneficial for high-traffic routes where model binding happens frequently. The package’s lazy-loading and caching further enhance performance.
Does Typhoon Reflection support Laravel’s middleware pipelines?
Yes, Typhoon Reflection can cache middleware priorities and invokable classes statically, eliminating redundant reflection calls during pipeline execution. This is useful for applications with complex middleware stacks, as it reduces the overhead of resolving middleware classes and methods at runtime.
How do I integrate Typhoon Reflection with Laravel’s cache system?
Use Laravel’s cache drivers (Redis, file, etc.) to store reflection results with `Cache::remember()`. Set TTLs based on class stability—e.g., 1 hour for config classes or 1 day for models. This ensures reflection data is reused across requests without redundant static analysis, improving performance in long-running processes like queues.
Is Typhoon Reflection compatible with Laravel’s PHPStan or Psalm integration?
Yes, the package supports Psalm and PHPStan PhpDoc types, making it a great fit for Laravel projects using static analysis tools. It enhances type safety for dependency injection, annotations (e.g., `@Route`, `@Middleware`), and IDE tooling. However, test custom annotations or complex docblocks to ensure full compatibility with your static analysis setup.
What Laravel versions and PHP versions does Typhoon Reflection support?
Typhoon Reflection requires PHP 8.1+ and works best with Laravel 10+ (PHP 8.1+). Laravel 9 (PHP 8.0+) may need minor adjustments due to PHP 8.1+ features. Always test with your specific Laravel version, especially if using newer features like enums or attributes, which may affect reflection behavior.
Are there any memory leak risks when using Typhoon Reflection in Laravel queues or Horizon?
No, Typhoon Reflection is designed to avoid memory leaks and works safely with `zend.enable_gc=0`. However, long-running Laravel processes like queues or Horizon should still monitor memory usage under heavy reflection loads. The package’s lazy loading and caching mitigate most risks, but test in production-like environments to confirm stability.
How do I migrate from native reflection to Typhoon Reflection in Laravel?
Start with non-critical paths like CLI commands, jobs, or event listeners to validate compatibility. Replace `new ReflectionClass($class)` with `TyphoonReflector::build()->reflectClass($class)`. Use native adapters for seamless integration with Laravel’s existing reflection usage. Gradually expand to core services once stability is confirmed.
Does Typhoon Reflection work with Laravel’s dynamic proxy classes or event listeners?
Typhoon Reflection supports template resolution, which is useful for analyzing dynamic class generation like proxy classes or event listeners. However, ensure no critical Laravel features rely on runtime reflection for these cases, as static reflection trades flexibility for speed. Test with Laravel’s `BindingResolutionException` and proxy-related features.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky