---
description: Fatals Laravel invisibles au lint — authorize, binding route, test d'intégrité (#1040 #1086 #1095 #1103)
alwaysApply: true
---

# Fatals runtime Laravel (invisibles à `php -l`)

## `$this->authorize()` — trait obligatoire
- EXIGER `use Illuminate\Foundation\Auth\Access\AuthorizesRequests` **et** `use AuthorizesRequests` sur la classe.
- La classe `Controller` de base est **vide** en Laravel 11+ : le trait n'est PAS hérité.
- Vérifier par `method_exists($instance, 'authorize')`, pas par lecture visuelle.
- Incidents : #1040, récidive #1086 (9×, HTTP 500 prod).

## Paramètre de méthode = segment de route
- Le nom DOIT correspondre EXACTEMENT : `{dossierFoncier}` → `$dossierFoncier`.
- Sinon le route binding est sauté, le modèle est vide, `route()` → `UrlGenerationException`.
- Incident : #1095.

## Avant push — test d'intégrité contrôleurs
- Lancer `php artisan test --filter=FoncierControllersIntegritySourceTest` (#1103) et coller la sortie.
- Détecte : `use` manquant, trait `AuthorizesRequests` absent, paramètre désaligné.
- Tourne **SANS** base de données (ne pas s'y fier aux Feature sqlite souvent skipped).
