titasgailius / larastan-extended
An opinionated Larastan extension. Automatically parse model's casts() method.
0.0.2
2025-06-09 16:15 UTC
Requires
- phpstan/phpstan: ^2.1
Requires (Dev)
- headercat/phpstan-extension-ide-helper: ^2.1
- larastan/larastan: ^3.4
- laravel/framework: ^11.44.2 || ^12.7.2
- laravel/pint: ^1.22
- orchestra/testbench-core: ^10.3
- pestphp/pest: ^3.8
- pestphp/pest-plugin-watch: ^3.0
README
Larastan Extended
Larastan Extended is an opinionated Larastan extension that inspects your Laravel application to make static analysis less verbose.
Features
Automatically infer the return type of the casts method.
/** * Get the attributes that should be cast. - * - * @return array{ - * user_id: 'integer', - * published_at: 'datetime', - * } */ public function casts(): array { return [ 'user_id' => 'integer', 'published_at' => 'datetime', ]; }
Detect non-nullable $request->user() calls in authenticated routes.
Route::get('posts', function (Request $request) { - /** @var \App\Models\User */ - $user = $request->user(); - - return $user->posts; + return $request->user()->posts; })->middleware('auth');
Detect non-nullable relationships.
Route::get('teams/{team}/owner', function (Team $team) { - /** @var \App\Models\User */ - $owner = $team->owner; - - return $owner; + return $team->owner; });
Installation
You can install the package via Composer:
composer require --dev titasgailius/larastan-extended
Usage
Include the extension before the Larastan extension.
includes:
+ - vendor/titasgailius/larastan-extended/extension.neon
- vendor/larastan/larastan/extension.neon