Moteur maison
devgine / web.
Un moteur web PHP maison : les standards PSR implémentés proprement soi-même, strictement typé, testé. Closed source — ce site tourne dessus.
- Rôle
- Auteur & mainteneur
- Période
- en cours
- Stack
-
- PHP 8.5
- PSR-7/11/15/16
- PHPStan max
- PHPUnit
- 0 Dependencies
Contexte
Les frameworks résolvent des problèmes que beaucoup de projets n'ont même pas — et le paient en complexité, en magie et en mises à jour forcées. devgine/web prend l'autre chemin : implémenter proprement les standards PSR soi-même, embarquer tout l'essentiel et rester compréhensible de bout en bout. Qui lit devgine comprend ce qui se passe — aucune couche que personne ne sait expliquer. Base : PHP ≥ 8.5, 0 dépendance runtime (uniquement les interfaces PSR), développé activement.
Solution & points forts
-
Cœur PSR complet
Container PSR-11 avec autowiring, bindings contextuels et service providers (register/boot) ; messages HTTP PSR-7 maison et pipeline de middlewares en oignon (PSR-15), headers de sécurité dès la sortie de boîte.
-
Routing & vues sans magie
Routes nommées et explicites, paramètres avec contraintes regex, routes par attributs, route model binding — et des templates en PHP pur avec layouts et composants qui embarquent HTML, CSS et JS, assets dédupliqués.
-
Base de données, auth & plus
QueryBuilder avec prepared statements, schema builder et migrations en CLI ; session guard, remember me, protection CSRF, cookies HttpOnly + SameSite + Secure par défaut. Plus validation, cache PSR-16, events PSR-14, logging PSR-3, mail, console.
-
PHPStan au niveau max — sans baseline
Chaque signalement est corrigé, pas supprimé. Pas de @, pas de catch vides, pas de mixed là où un type précis est possible.
-
Des tests pour chaque API publique
La couverture PHPUnit est une condition de merge — tout comme un chapitre de guide avec exemple exécutable pour chaque feature. PSR-12 via php-cs-fixer, SemVer strict, conventional commits.
-
Security by default
Auto-escaping dans les vues, CSRF sur toutes les requêtes qui changent l'état, uniquement du SQL paramétré, crypto exclusivement avec des primitives standard.
Aperçus