Guide

De complete gids voor het bouwen met Phlo: van installatie en je eerste route tot realtime applicaties en de filosofie achter de taal.

1InleidingPhlo is een geïntegreerd platform met zijn eigen full-stack taal. Je schrijft .phlo bronbestanden; Phlo transpileert ze naar PHP, CSS en JavaScript die je kunt openen en lezen, met elke runtime-fout die terugwijst naar de .phlo regel die je hebt geschreven. Dezelfde taal heeft vier lagen: de taal zelf, het applicatieplatform (backend resources plus de phlo.js SPA-engine), het serverplatform (FrankenPHP, de Phlo Daemon, Phlo Realtime, Phlo WhatsApp) en het operations platform (de Phlo Dashboard). Deze gids behandelt ze allemaal. De productie-release draait op een gedeelde runtime, meestal in /opt/phlo/, terwijl elke app zijn eigen bron, data, gegenereerde PHP en webroot behoudt. 2Configuratiedata/app.json beschrijft de build: welke resources worden geladen, waar de release-uitvoer naartoe gaat, en welke resources alleen in release of alleen in dev horen. 3Runtime-configuratiedata/app.json beschrijft de build, wat getranspiled wordt. Dit hoofdstuk behandelt de runtime, wat er gebeurt bij elke aanvraag. Die configuratie bevindt zich in www/app.php (en, voor stage/release, release/www/app.php) als argumenten voor phloapp(...). 4Syntax & StructuurPhlo transpileert .phlo bronbestanden naar gewone PHP-klassen en gegenereerde assets. De syntaxis is PHP-achtig, maar zonder puntkomma's aan het einde van statements. 5RouterenRouting in Phlo koppelt een spatie-gescheiden pad + HTTP-methode aan een doel (meestal een methode). Routes van alle .phlo-bestanden worden verzameld; de router wordt geactiveerd met app::route(). 6ViewsViews leven direct in .phlo-bestanden. Een view transpileert naar een PHP-methode die HTML retourneert. Je rendert een view met view(...). 7CSSPhlo gebruikt een compacte, puntkomma-vrije CSS-syntaxis binnen <style-blokken. 8ORMPhlo wordt geleverd met een krachtige ingebouwde ORM waarmee je databasetabellen kunt definiëren als klassen. Modellen kunnen snel worden gedefinieerd via columns of volledig via een declaratieve schema. Records worden behandeld als instances, met ondersteuning voor props, methods, views, relaties en meerdere database-engines. 9InstantiebeheerPhlo gebruikt zijn eigen instance manager om objecten efficiënt en voorspelbaar te initialiseren en opnieuw te gebruiken. Dit systeem bepaalt wanneer controller code wordt uitgevoerd, hoe instanties worden opgeslagen en hoe circulaire referenties worden voorkomen. 10Gereedschap & CLIPhlo-apps hebben een CLI-laag voor build, lint, release en reflection. Gebruik het altijd via de dev entrypoint van de app. 11VertalingenPhlo gebruikt de lang resource voor meertalige view-tekst en vertaling. In views schrijf je statische tekst bij voorkeur met de compacte taalafkorting. Je schrijft brontekst in je eigen taal; de onderstaande voorbeelden gebruiken Nederlands (nl) als brontaal. 12GeavanceerdPhlo blijft opzettelijk modulair. Je kunt een app klein houden en alleen de resources activeren die het nodig heeft, of meerdere bronpaden en resourcegroepen combineren. 13BijlagenDeze bijlagen geven compacte voorbeelden die overeenkomen met de productie-release. 14WebSocketRealtime in Phlo draait via Phlo Realtime, de WebSocket-server die is ingebouwd in de Phlo Daemon(/guide/daemon). Eén Node-proces beheert de socketverbindingen over elke vhost en voert elk evenement op je PHP-app uit via de eigen worker pool van de daemon. Je app implementeert vier hook-functies en zendt uit vanuit PHP met wsCast(). 15TakenPhlo heeft een ingebouwde taakuitvoerder voor meerdere apps. Iets activeert tasks::run elke minuut, een systeem cron-invoer of de Phlo Daemon(/guide/daemon); de tasks resource matcht declaratief met %app-tasks. Geen cron-syntaxis in je app, geen externe planner. 16DemonDe Phlo Daemon is een optionele Node sidecar (phlo-daemon.js): een generieke engine die elk Phlo-doel naar een pool van persistente workers dispatcht. De kern van Phlo werkt zonder deze; de daemon versnelt de zware paden en ondersteunt WebSockets en geplande taken. 17SEODe seo resource centraliseert de zoek- en deelmetadata die een app nodig heeft: sitemap.xml, robots.txt, hreflang-alternatieven, de canonieke link, en een <head blok met <meta beschrijving plus Open Graph en Twitter kaarten. Het haalt alles af van props die je al hebt ingesteld, zodat een uniforme, complete maar beheersbare set vanuit één plek wordt geleverd. 18AIPhlo bundelt een aantal AI-providers (OpenAI, Claude, Gemini, DeepSeek, Grok) achter een enkele façade. Jij kiest een model, Phlo kiest de juiste engine. Streaming naar de DOM gebruikt dezelfde apply() mechanismen als de rest van Phlo: geen aparte client-side bibliotheek, geen aparte event bus. 19TracePhlo's trace mode is een runtime-instrumentatielaag die elke aanroep naar een gegenereerde method, prop getter, static of native functie logt met timing en argumenten. Per verzoek schrijft Phlo een JSON-dump naar data/trace/<id.json. Bedoeld voor debugging en profiling, niet voor productie. 20Voor AI AgentsPhlo is gebouwd om aangedreven te worden door AI-agenten, niet alleen door hen gelezen te worden. Elke app biedt drie CLI-lagen die een agent in staat stellen om te werken zonder voorafgaande kennis van de codebase: reflect:: om deze te begrijpen, phloeval om deze uit te voeren, en build:: om te transpilen en te verifiëren. Alle drie vereisen build: true en mogen nooit tegen productie draaien. 21FilosofieDit hoofdstuk legt uit waarom Phlo is gebouwd zoals het is: de weloverwogen afwegingen achter de parser, de transpiler, de runtime en de tooling. De korte versie: Phlo is een geïntegreerd platform met zijn eigen full-stack taal, en de kracht ligt in de verticale integratie van alle lagen, één taal en één mentaal model van code tot fleet. 22PrestatieEen Phlo-app die de conventies in deze gids volgt, begint vanuit een sterke Lighthouse-positie, omdat de architectuur al het meeste doet wat de audits meten: server-gerenderde HTML, één kleine uitgestelde script, één stylesheet, geen framework payload en geen externe verzoeken. Dit hoofdstuk koppelt correct Phlo-gebruik aan de beste praktijken voor webprestaties en behandelt het deel dat van jou blijft: afbeeldingen, markup en metingen. 23Implementatie & CI/CDEen Phlo-app is statisch zodra deze is gebouwd. build::release transpileert je .phlo-bronnen naar gewone PHP, CSS en JS onder een release/-directory (zie het hoofdstuk Tooling); productie serveert die output zonder transpiler en zonder build-stap in het aanvraagpad. Deployment is de handeling van het veilig krijgen van een geteste release/ op de server en er veilig naar overschakelen. 24PWA & native appsEen Phlo-app is al een website. Dezelfde build wordt geleverd als een installeerbare Progressive Web App zonder extra tooling, en dezelfde weboutput kan worden verpakt in een dunne native shell voor de app-winkels. Er is geen aparte "mobiele build": één bron, twee extra distributievormen. 25IntegratiesDe meeste apps communiceren uiteindelijk met iets buiten zichzelf: een chatservice, een kalender, een boekhoudbackend, een kaartterminal, een betalingsverwerker. Phlo levert twee families hiervoor, beide in de runtime, zodat er geen SDK hoeft te worden toegevoegd en geen aparte client hoeft te worden aangesloten. Connectors zijn dunne, uniforme wrappers rond JSON REST API's; de betalingsresources omhullen Stripe en SumUp.

We gebruiken essentiële cookies om deze site te laten werken. Met uw toestemming gebruiken we ook analytics om de site te verbeteren.