titasgailius/larastan-extended

An opinionated Larastan extension. Automatically parse model's casts() method.
7,618
Install
composer require titasgailius/larastan-extended
Latest Version:0.0.2
License:MIT
Last Updated:Jun 9, 2025
Links: GitHub  ·  Packagist
Maintainer: TitasGailius

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

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

637,827,751 9,703
laravel/framework

The Laravel Framework.

589,172,971 34,950
laravel/tinker

Powerful REPL for the Laravel framework.

498,216,183 7,442
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

413,412,504 609
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

391,429,217 4,660