Kontakt

Wie schreibt man das in PHP?

by Christoph Dähne on 21.01.2021

Sehr früh in einem Projekt stellt sich die Frage nach der Programmiersprache. Welche Sprache ist im Team bekannt, geeignet für die Aufgabe, integrierbar in bestehende Prozesse und Infrastruktur und trägt in zukünftigen Änderungen? In dieser Blog–Artikel–Reihe kannst du einen Blick auf ein paar Mehr-als-Hello-World Beispiele werfen.

Ein Hello-World-Programm ist zwar ganz nett, aber mir manchmal doch zu klein. Daher habe ich als Web-Entwickler folgende Beispiel rausgesucht:
Als Proof-of-Concept (PoC) kann ich eine Mini-Website per HTTP aufrufen. Auf der Website steht, wie oft ich diese bereits aufgerufen habe. Mein Mehr-als-Hello-World spricht also HTTP und lädt bzw. speichert Daten (IO).

Spricht HTTP und lädt/speichert Daten

Dieser Blog-Artikel ist Teil einer wachsenden Reihe:

Disclaimer

Die Beispiele sind minimal gehalten und lassen sich so produktiv nicht einsetzen. Insbesondere das Speichern des Zugriff-Counters in einer Datei ist nur ein Platzhalter. Der Beispiel-Code funktioniert nicht bei parallelen Zugriffen. Trotzdem bin ich der Meinung, dass die Lösung als Beispiel ausreicht. Bitte verstehe die Dateizugriffe als Platzhalter für zBsp Zugriffe auf eine Datenbank.

Die Beispiele kannst du statt dessen gerne als Kopiervorlage benutzen, wie ein Hello-World-Beispiel auch.

Wie schreibt man das in PHP?

Dann geht es jetzt gleich in den Code. In dem PHP-Beispiel verzichte ich auf ein Framework oder eine Library. In Neos würde die Lösung natürlich etwas anders aussehen.

<?php
// filename: increment-and-get.php
 
// some configuration
$dataPath = 'data';
$counterPath = $dataPath . '/counter.txt';
 
// load, modify and store the counter
$counterText = file_get_contents($counterPath);
$nextCounter = intval($counterText) + 1;
file_put_contents($counterPath, $nextCounter); 
 
// send the result
echo("value=$nextCounter");

In dem Beispiel befindet sich der Code bearbeiten eines Request: Counter laden, Counter erhöhen, Counter speichern und senden. Gerade in PHP ist der Code sehr kurz, was einen einfachen Grund hat: der Webserver ist nicht Teil des Codes. Das PHP–Programm braucht einen Webserver, in dem es laufen kann, wie nginx oder apache.

Mit folgendem Script lässt sich das Beispiel lokal starten. In dem Beispiel benutze ich den Built-In Webserver von PHP.

#!/usr/bin/env bash
 
set -eux
 
# setup data-directory unless present
if [ ! -d "data" ]; then
  echo "setting up data-directory"
  mkdir data
  echo 0 > data/counter.txt
fi
 
echo "Please go to http://localhost:3000/increment-and-get.php"
 
php -S localhost:3000

Das ist der erste Blog-Post dieser Reihe. Anmerkungen und Feedback sind, wie immer, sehr willkommen.