corentin_wakdo/docs/adr/0001-php-from-scratch-sans-composer.md
Imugiii 035129d7be
All checks were successful
CI / js-tests (pull_request) Successful in 23s
CI / secret-scan (pull_request) Successful in 10s
CI / php-lint (pull_request) Successful in 23s
CI / static-tests (pull_request) Successful in 45s
CI / auto-merge (pull_request) Successful in 4s
docs(adr): registre des decisions d'architecture (9 ADR)
docs/adr/ : une fiche courte (contexte / decision / consequences) par decision
structurante, + un index et un modele de fiche.

0001 PHP from scratch sans Composer ; 0002 back-office MVC rendu serveur ;
0003 stock en % + dispo calculee RG-T21 ; 0004 PIN d'action sensible + audit en
transaction ; 0005 throttle PIN separe du login (RG-T22) ; 0006 HTTP 409 vs 422 ;
0007 effacement RGPD par anonymisation (tombstone) ; 0008 Makefile -> docker compose
(wakdo-migrate) ; 0009 compose standalone + prod gitignore.

Deuxieme PR du jeu de documentation. Resout le renvoi docs/adr/ d'ARCHITECTURE.md.
2026-06-17 13:50:27 +00:00

1 KiB

ADR-0001 — PHP from scratch, sans framework ni Composer

  • Statut : Accepte
  • Date : 2026-04-23

Contexte

Certification RNCP (Titre Developpeur Web, option DevOps). L'objectif pedagogique est de demontrer la maitrise des fondamentaux (routage, PDO, sessions, securite) plutot que la configuration d'un framework. Options : Symfony/Laravel ; micro-framework (Slim) ; from scratch.

Decision

Application PHP 8.3 ecrite from scratch : routeur, autoloader PSR-4 manuel (spl_autoload_register), couche Database sur PDO, le tout sans Composer. Les outils de dev (PHPUnit, PHPStan) sont utilises via leurs .phar autonomes.

Consequences

  • (+) Chaque mecanisme (routage, auth, RBAC, requetes preparees) est explicite et defendable a l'oral ; pas de magie de framework.
  • (+) Surface de dependances minimale (moins de supply-chain a auditer).
  • (-) Du code d'infrastructure a ecrire et tester soi-meme (Core, Auth).
  • CI sans Composer : les .phar (phpunit, phpstan) sont epingles/telecharges. Voir docs/PROJECT_CONTEXT.md section 6.