Aller au contenu principal

Conventions PHP

Baseline

  • PHP 8.3+
  • PSR-12 strict
  • Propriétés et types de retour typés
  • Constructor property promotion quand lisible
  • readonly quand la mutation n'est pas requise
  • Préférer l'injection de dépendances aux facades dans les services complexes

Pattern — constructeur typé

// ✅ BIEN
public function __construct(
private readonly UserRepository $users,
private readonly AuditLogger $auditLogger,
) {}
// ❌ MAL
public function save($data)
{
DB::table('users')->insert($data);
}

Checklist

  • ✅ Pas de méthodes publiques sans type sauf si la signature du framework l'exige
  • ✅ Pas de code mort
  • ✅ Pas de règles métier conditionnelles dupliquées
  • ✅ Les exceptions sont loggées ou propagées intentionnellement
  • ✅ Pas de env() en dehors des fichiers de config

Champs chiffrés (Encrypted Cast)

Les valeurs sensibles stockées en base (tokens API, clés) doivent utiliser le cast Eloquent encrypted :

protected function casts(): array
{
return [
'api_key' => 'encrypted',
'token_secret' => 'encrypted',
];
}

Toujours entourer le premier accès dans un try/catch pour DecryptException dans les constructeurs de service.