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

Type Info Laravel Package

symfony/type-info

Symfony TypeInfo extracts and normalizes PHP type information from reflections and type strings, with support for generics, nullables, enums, and collections. Resolve types via TypeResolver and work with a rich Type API for inspection and string casting.

View on GitHub
Deep Wiki
Context7

Extracts PHP types information.

Frequently asked questions about Type Info
How can I use Symfony TypeInfo to validate Laravel API request payloads?
Use the `TypeResolver` to parse incoming request data and enforce constraints. For example, in a middleware, resolve the type of `$request->input('user_id')` and assert it matches `Type::int()` or `Type::nonNullable(Type::string())`. This replaces manual validation logic with type-driven rules, reducing runtime errors.
Does Symfony TypeInfo work with Laravel’s Eloquent models for runtime type checking?
Yes. You can resolve attribute types dynamically using `Type::fromValue($model->attribute)`. For example, validate a `setEmail()` mutator by calling `Type::fromValue($value)->assertType(Type::string())`. This ensures type safety even for dynamic properties or magic methods.
What’s the minimal setup to integrate Symfony TypeInfo into a Laravel project?
Install via Composer: `composer require symfony/type-info phpstan/phpdoc-parser`. Register the `TypeResolver` as a singleton in Laravel’s service container (e.g., `app/Providers/AppServiceProvider`). No additional Laravel-specific wrappers are needed—it works with vanilla PHP reflection and PHPDoc.
Can I use Symfony TypeInfo to generate PHPDoc for legacy Laravel codebases?
Absolutely. The `TypeResolver` can infer types from reflection or runtime values (e.g., `Type::fromValue($user->id)`). Use this to auto-generate PHPDoc for static analyzers like PHPStan or Psalm, improving maintainability without manual annotation.
How does Symfony TypeInfo handle complex types like generics (e.g., `Collection<int>`) in Laravel?
Use the fluent factories to build complex types. For example, `Type::generic(Type::object(Collection::class), Type::int())` creates a `Collection<int>` type. This is useful for validating API responses, event payloads, or service container bindings where generics are involved.
Will Symfony TypeInfo slow down my Laravel application due to reflection overhead?
No. The package includes caching via `TypeContextFactory::collectTemplates` to mitigate reflection costs. Benchmark in your specific use case (e.g., request validation), but the overhead is minimal for typical Laravel workflows, especially with cached resolvers.
How can I validate constructor arguments in Laravel’s service container using Symfony TypeInfo?
Bind types to container arguments using `TypeResolver`. For example, enforce non-nullable strings in a service constructor by binding `Type::nonNullable(Type::string())` and validating with `Type::fromValue($argument)->assertType()`. This integrates with Laravel’s DI container seamlessly.
Does Symfony TypeInfo support Laravel’s event system for payload validation?
Yes. In event listeners, use `Type::fromValue($event->payload)->isIdentifiedBy(MyEvent::class)` to validate payloads. This prevents runtime errors by ensuring event data matches expected types, which is critical for decoupled Laravel applications.
Are there alternatives to Symfony TypeInfo for type validation in Laravel?
For runtime validation, alternatives include `phpstan/phpstan` (static analysis) or `spatie/laravel-query-builder` (for query constraints). However, Symfony TypeInfo uniquely combines reflection, PHPDoc parsing, and runtime type composition—ideal for dynamic Laravel workflows like APIs or legacy codebases.
How do I test type constraints in PHPUnit with Symfony TypeInfo?
Use assertions like `assertTrue(Type::fromValue($result)->isIdentifiedBy(TypeIdentifier::ARRAY))` or `assertFalse(Type::fromValue($value)->isNullable())`. This ensures your tests validate type behavior, catching issues early. Works alongside Laravel’s testing helpers for end-to-end coverage.
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.
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope
anil/file-picker
broqit/fields-ai