Wer Internet macht, wird früher oder später mit PHP zu tun bekommen.
PHP ist die verbreitetste serverseitige Sprache.
Das Erscheinungsjahr ist 1995.
PHP ist Open-Source und steht unter freier Software Lizenz.
Sie ein gutes Werkzeug für dynamischen Internetseiten.
Wer früher schon mal mit C oder Pascal zu tun hatte, wird sich in diese Sprache sehr schnell einlernen können.
WordPress und die meisten CMS sind in PHP programmiert.
PHP ist eine Scriptsprache, sie wird in einer kontrollilerten Laufzeitumgebung,
dem Interpreter, ausgeführt.
C oder Pascal Programme werden compiliert, abgespeichert und als Maschinencode ausgeführt.
Das sind also Compiler-Sprachen.
Compiler Sprachen laufen deutlich schneller und effizienter ab.
PHP könnte natürlich genauso als Maschinencode ablaufen.
Tut es aber nicht, wegen der Kontrolle.
Bei jedem Provider laufen tausende PHP Programme.
Und damit diese Programme immer brav sind, und nichts machen,
was nicht erlaubt ist, laufen die eben in einer Laufzeitumgebung.
In aller Regel sind PHP Programme an relationale Datenbanken angebunden, meist MySQL.
Was ist eine relationale Datenbank?
Eine Leihbücherei könnte z.B. eine nummerierte Tabelle (Liste) aller Bücher führen,
eine zweite nummerierte Tabelle (Liste) für die Mitglieder,
und eine dritte nummerierte Tabelle für die Ausleihvorgänge.
In der dritten Tabelle würde dann eine Zeile in etwa so aussehen:
Eintrag 47: Mitglied 402 hat das Buch 59 ausgeliehen.
Das wäre ein Beispiel für die Verknüpfung von Tabellen über die Nummerierung.
In MySQL wird automatisch und eindeutig nummeriert.
In diesem Fall ergibt eine Verknüpfung über die Nummerierung einen eindeutigen Datensatz.
Ansonsten ergäbe eine Verknüpfung eine Ergebnismenge.
Jede Tabelle ist eine Relation,
und die Summe aller Tabellen ist eine relationale Datenbank.
Einzelne oder mehrere Spalten können zusätzlich noch indexiert werden.
Damit ist gemeint, daß man z.B. eine Mitgliederliste alphabetisch nach Namen sortieren kann.
Indexierung enspricht einer lexikalischen Sortierung für diese Spalte,
um die Suche effizient zu machen.
Relationale Datenbanken sind für die Verwaltung dynamischer Inhalte zuständig.
Im Grunde ist jedes HTML Dokument schon PHP.
Verrausgesetzt, man stellt die Endung des Dokumentes von html auf php um.
Der Server schaut auf die Endung.
Ist diese html, winkt er durch, und gibt alles textuell aus, auch den PHP Code.
Ist die Endung php, wird compiliert.
Die große Stärke von PHP ist die Einfachheit.
PHP-Code kann in ein HTML „eingestreut“ werden.
Zur Einfachheit gehört eine gewisse „Lockerheit“ im Umgang mit Variablen und Typendeklarationen.
Das gilt sogar für Array’s, die man ohne jede Deklaration einfach aufbauen kann.
Dabei sind typübergreifende Formulierungen möglich.
Ein Beispiel für diese Lockerheit ist Folgendes:
$handledir=opendir ($path);
while (false!==($filefetch[] = readdir ($handledir)))
closedir($handledir);
Eine while-Schleife benötigt einen Bool-Wert als Abbruchbedingung.
Innerhalb der While-Schleife findet ein Vergleich zwischen Bool und String statt.
Also ein Vergleich zwischen verschiedenen Typen.
Die while Schleife hat überhaupt keinen Body,
sie läuft implizit, und baut das Array filefetch[] auf.
Die Variable $filefetch[] ist ein Array, das zuvor gar nicht deklariert werden musste.
Diese Merkwürdigkeiten werden in anderen Programmiersprachen „gnadenlos“ befehlert und abgeschmettert.
PHP ist da anders, diese Sprache erlaubt diese Dinge.
Folgendes PHP Script ist eine gute Übung für PHP
Verzeichnisbaum, realisiert mit einem PHP-Script.
Das Script liefert eine Übersicht über die Verzeichnisstruktur des eigenen Speichers.
Ich habe dieses Script immer zur Hand, um mir eine Übersicht zu verschaffen.
Aus Sicherheitsgründen sollte man es nur kurze Zeit auf dem Server stehen haben,
und mit einem kryptischen Dateinamen versehen.
Innerhalb des Scriptes hat man einen rekursiven Aufruf,
um sich vollständig durch den gesamten Baum durchzuhangeln.
Das Scirpt ist in ein HTML Grundgerüst eingefasst.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>Verzeichnisbaum</title>
</head>
<body>
<div>
<?php
function verzeichnisbaum($path)
{
$handledir=opendir ($path);
while (false!==($filefetch[] = readdir ($handledir))) ;
closedir($handledir);
for ($x=0;$file=$filefetch[$x];$x++)
{
# Hier die Ausgabe der Dateinamen
if (is_file($path.$file))
{
# Diese Ausgabe ausblenden, wenn man nur die Verzeichsnisübersicht haben will.
#echo "Datei: $file<br>";
}
}
# Hier die Ausgabe der Verzeichnisse
for ($x=0;$file=$filefetch[$x];$x++)
{
if (is_dir($path.$file) and $file!='..' and $file!='.' )
{
echo "Verzeichnis".$path.$file."<br>";
# Rekursiver Aufruf der Funktion, um die Unterverzeichnisse abzuarbeiten.
verzeichnisbaum($path.$file."/");
}
}
}
# Aufruf des Algorithmus
verzeichnisbaum("./");
?>
</div>
</body>
</html>
Für WordPress produziert dieses Script eine Ausgabe in der Art:
Verzeichnis./wp-admin
Verzeichnis./wp-admin/css
Verzeichnis./wp-admin/css/colors
Verzeichnis./wp-admin/css/colors/blue
Verzeichnis./wp-admin/css/colors/coffee
Verzeichnis./wp-admin/css/colors/ectoplasm
Verzeichnis./wp-admin/css/colors/light
Verzeichnis./wp-admin/css/colors/midnight
Verzeichnis./wp-admin/css/colors/modern
Verzeichnis./wp-admin/css/colors/ocean
Verzeichnis./wp-admin/css/colors/sunrise
Verzeichnis./wp-admin/images
Verzeichnis./wp-admin/includes
Verzeichnis./wp-admin/js
Verzeichnis./wp-admin/js/widgets
Verzeichnis./wp-admin/maint
Verzeichnis./wp-admin/network
Verzeichnis./wp-admin/user
Verzeichnis./wp-content
Verzeichnis./wp-content/languages
Verzeichnis./wp-content/languages/plugins
Verzeichnis./wp-content/languages/themes
Verzeichnis./wp-content/plugins
Verzeichnis./wp-content/plugins/akismet
Verzeichnis./wp-content/plugins/akismet/views
Verzeichnis./wp-content/plugins/akismet/_inc
Verzeichnis./wp-content/plugins/akismet/_inc/img
Verzeichnis./wp-content/plugins/contact-form-7
Verzeichnis./wp-content/plugins/contact-form-7/admin
Verzeichnis./wp-content/plugins/contact-form-7/admin/css
Verzeichnis./wp-content/plugins/contact-form-7/admin/includes
Verzeichnis./wp-content/plugins/contact-form-7/admin/js
Verzeichnis./wp-content/plugins/contact-form-7/assets
Verzeichnis./wp-content/plugins/contact-form-7/includes
Verzeichnis./wp-content/plugins/contact-form-7/includes/block-editor
Verzeichnis./wp-content/plugins/contact-form-7/includes/css
und so weiter und so fort...................
Auf
findet man das Manual, die Gebrauchsanweisung, für den Umgang mit dieser Scriptsprache.
Veröffentlicht am 26.12.2022.
© 2022 Matthias Heller