Phpanta
Ein kleines Full-Stack-Webframework für schlichtes PHP 8.5 und browsernatives TypeScript. Keine Laufzeitabhängigkeiten, keine Template-Sprache, kein Composer auf dem Server: Eine Website bindet Phpanta als Git-Submodul ein, lädt einen einzigen Autoloader und liefert schlichte Dateien aus.
Es wurde aus der Website von neuro.SYS herausgelöst, die darauf aufbaut. Diese hier ebenfalls: Jede Seite ist ein Markup-Baum, den ihre View baut, in ihrer Shell gerendert und vom Export-Befehl des Frameworks als statische Dateien für GitHub Pages geschrieben — einmal in jeder ihrer Sprachen.
Woraus es besteht
- Typisiertes HTTP. Eine Anfrage wird defensiv in einen unveränderlichen
Requestgeparst, eine Antwort ist ein typisiertes Objekt, und jeder Header ist ein Namens-Case und eine Wertklasse. - Ein Markup-Baum. Eine View liefert Knoten, nie einen String. Escaping und die Prüfung des URL-Schemas stecken in
render(), also gelten sie, wie auch immer ein Element gebaut wurde — diese Seite eingeschlossen, in beiden ihrer Sprachen. - Unveränderliche, lazy ausgewertete Collections für jede Gruppe, die eine öffentliche Grenze überquert.
- Übersetzung. Sichtbarer Text ist ein
Translatable, und der Baum setzt jedes Wort beim Rendern in das nächstgelegenelang— auch einen Link oder ein Stück Code in einem Satz, dorthin, wo die Wortstellung der jeweiligen Sprache es haben will. - Eine signierte API.
/api/{service}/{version}/{action}ist die einzige Adressfamilie, die schreibt, und jeder Aufruf ist mit einem ECDSA-Schlüssel signiert, den der Server nicht benutzen kann. Ein Deployment ist eine einzige signierte Anfrage. - Health-Checks. Was eine Website von ihrem Host braucht, steht im Code, und das laufende Deployment meldet, ob es das hat.
- SPA-Navigation, in der jeder Link ein echtes
hrefist, sodass eine Seite ohne JavaScript genauso funktioniert.
Wie es weitergeht
- Erste Schritte — es in eine Website einbinden, die App, bauen, deployen.
- Die Regeln — die Gewohnheiten, die es ersetzt, und warum jede davon laut scheitert.
- Architektur — eine Anfrage, verfolgt durch die Schichten.
- Das Repository — der Quelltext und die vollständigen Dokumente unter
docs/.