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 Docblock

Reflection Docblock Laravel Package

phpdocumentor/reflection-docblock

PHPDoc-compatible DocBlock parser from phpDocumentor. Use DocBlockFactory to parse doc comments or Reflection objects, extracting summaries, descriptions, and tags for annotations and metadata. Ideal for tooling that reads and interprets PHPDoc blocks.

View on GitHub
Deep Wiki
Context7

At a glance

Frequently asked questions about Reflection Docblock
How do I install phpdocumentor/reflection-docblock in a Laravel project?
Run `composer require phpdocumentor/reflection-docblock` in your project root. The package has no Laravel-specific dependencies and integrates cleanly with Composer’s autoloader. Ensure your Laravel app targets PHP 8.1+ for full compatibility.
Can this package parse DocBlocks from ReflectionClass objects in Laravel?
Yes. Use `DocBlockFactory::createInstance()` to create a factory, then pass a `ReflectionClass` object to the `create()` method. The factory will automatically read the DocBlock from the reflection object if available.
Does this support Laravel-specific annotations like @route or @middleware?
No, but you can extend the `StandardTagFactory` to handle custom tags. For example, create a Laravel-specific tag handler for `@route` and register it with the factory to parse routes dynamically from DocBlocks.
What Laravel versions does this package officially support?
The package itself is framework-agnostic, but it works with Laravel 9+ (PHP 8.1+) and Laravel 10+ (PHP 8.2+). Test thoroughly if using older Laravel versions, as PHPDoc 3.0 features may not be fully backward-compatible.
How can I cache parsed DocBlocks in Laravel to improve performance?
Cache the `DocBlock` objects using Laravel’s cache system (e.g., Redis or file cache). Store the parsed DocBlock as a serialized string or JSON, keyed by the class name or file path, and retrieve it on subsequent requests.
Will this package work with legacy PHPDoc syntax in Laravel codebases?
Yes, but complex or malformed DocBlocks may fail. Use try-catch blocks around parsing logic and implement fallback strategies, such as skipping invalid DocBlocks or logging warnings for maintenance.
Can I use this to dynamically generate Laravel routes from @route annotations?
Absolutely. Parse DocBlocks for `@route` tags during Laravel’s boot phase, then dynamically register routes using `Route::get()`, `Route::post()`, etc. Combine this with Laravel’s service container to bind route handlers automatically.
Are there alternatives to this package for PHPDoc parsing in Laravel?
Yes, alternatives include `rubix/ml` (for annotations) or `doctrine/annotations` (legacy). However, `phpdocumentor/reflection-docblock` is the most PHPDoc 3.0-compliant and actively maintained, making it ideal for modern Laravel apps.
How do I handle custom annotations (e.g., @inject) in Laravel with this package?
Extend `StandardTagFactory` to register a custom tag handler for `@inject`. In the handler, parse the annotation value and integrate with Laravel’s service container (e.g., using `app()->bind()` or `app()->when()`) to resolve dependencies dynamically.
What should I test when integrating this into a Laravel project?
Test DocBlock parsing for critical tags (e.g., `@param`, `@return`, `@throws`), edge cases like generics (`@template`), and malformed input. Mock `ReflectionClass` objects to simulate parsing in unit tests, and validate integration with Laravel’s service container or routing system.
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.
codraw/framework-extra-bundle
codraw/messenger
codraw/security
codraw/mailer
codraw/contracts
codraw/profiling
codraw/dependency-injection
codraw/tester
codraw/core
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony