barryvdh / laravel-ide-helper

IDE Helper for Laravel
MIT License
14.17k stars 1.16k forks source link

Fix return type of `user` method inside form requests #1250

Open MatanYadaev opened 3 years ago

MatanYadaev commented 3 years ago

Summary

The return type of $this->user() inside a form request is mixed instead of User. When calling the same method from outside the form request the return type is correct $request->user() // User|null.

Code example

/**
 * @mixin IdeHelperUser
 */
class User extends Authenticatable
{
  //
}
class UserController
{
  public function index(GetUsersRequest $request)
  {
    $user = $request->user(); // User|null
    $user->id; // `id` is auto-completed
  }
}
class GetUsersRequest extends FormRequest
{
  public function authorize(): bool
  {
    $user = $this->user(); // mixed
    $user->id; // `id` isn't auto-completed
  }
}