1: Instellen

In deze tutorial bouw je Phlo Poll: een kleine poll-app die vraagt "Welke stack wint?". Je begint met een lege map en eindigt met een gestylede, meertalige, realtime poll. Elk hoofdstuk voegt een laag toe: een route, een view, CSS, data, stemmen, async updates, vertalingen en live resultaten. In dit eerste hoofdstuk installeer je Phlo, schrijf je je eerste route en zie je deze in de browser.

1.1: Installeer met Docker

De snelste manier om Phlo uit te voeren is de officiële Docker-image. Het bevat PHP, de FrankenPHP-webserver en de Phlo-engine op /phlo. Scaffold een nieuwe app in ./app:

docker run -it -v $(pwd)/app:/app ghcr.io/q-ainl/phlo php /phlo/install.php /app

De installer stelt een paar vragen. Beantwoord ze als volgt:

App name: Poll
Host: localhost
Purpose (one line): Which stack wins?
Resources (comma-separated, empty for none): <druk op enter>
Create "Poll" in /app for host localhost? y

Laat de resources voorlopig leeg; je voegt ze toe wanneer de app ze nodig heeft. De installer genereert de projectstructuur (app.phlo, www/app.php, data/app.json) en eindigt met een schone build, zodat je altijd met een schone lei begint.

1.2: Start de server

Voer dezelfde afbeelding uit als een webserver:

docker run -p 80:80 -v $(pwd)/app:/app ghcr.io/q-ainl/phlo

Open http://localhost in je browser. Je ziet de tijdelijke startpagina met de app-naam en je eenregelige doel. Die pagina komt van de gestructureerde app.phlo, die al een route, een view en een stijlblok bevat. Laat het zoals het is; de poll krijgt zijn eigen bestand.

1.3: Je eerste route

Elke .phlo-bestand compileert naar precies één PHP-klasse, genoemd naar het bestand. Maak app/poll.phlo (naast app.phlo) met één regel:

route GET hello => view('Hello')

Drie dingen om op te letten:

Routes van alle bestanden worden automatisch verzameld; de gestructureerde app.phlo activeert ze met app::route(). Sla het bestand op en herlaad de browser: er gaat niets mis, de nieuwe route is gewoon nog niet gebouwd.

1.4: Bouw en controleer

In ontwikkeling (build: true) bouwt Phlo gewijzigde bronnen bij elke aanvraag opnieuw, dus het opnieuw laden van de browser is meestal voldoende. De CLI geeft je dezelfde build expliciet, plus een lintcontrole. De CLI draait binnen de container, omdat www/app.php naar de engine op /phlo wijst:

docker run --rm -v $(pwd)/app:/app ghcr.io/q-ainl/phlo php /app/www/app.php build::run
docker run --rm -v $(pwd)/app:/app ghcr.io/q-ainl/phlo php /app/www/app.php build::lint

De eerste opdracht print de bestanden die het heeft gecompileerd:

["*app.php","+poll.php","*classmap.php","*sourcemap.php"]

Voer het opnieuw uit en het retourneert []: alles is gebouwd, er is niets veranderd. build::lint moet ook [] retourneren; dat betekent dat de gecompileerde PHP schoon wordt geparsed. Voortaan schrijven de hoofdstukken de korte vorm php www/app.php build::run; prefix het met de Docker-opdracht hierboven als je de Docker-setup gebruikt.

Open nu http://localhost/hello. De browser toont een minimale pagina met de tekst Hello. Eén regel van Phlo, één route, één pagina. In het volgende hoofdstuk vervang je het door een echte view.

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