Das ist die kleinste PHP Template-Engine, bzw. das kleinste PHP-CMS der Welt, erstellt mit der Programmiersprache PHP und 7 Zeilen Code.
Was ist glob()
Die PHP-Funktion glob()
ist in der Lage Dateinamen oder Verzeichnisse, auf Basis einer RegularExpression, zu suchen bzw. zu maskieren. Als Ergebnis liefert glob()
ein iterierbares Objekt zurück (siehe PHP-Doku).
Mit glob()
rekursiv suchen
Das folgende Codebeispiel stammt aus dem Flatfile CMS FlightCMS und listet alle Beiträge innerhalb bzw. rekursiv von $dir
auf.
foreach (glob($dir.'*', GLOB_ONLYDIR) as $file_name)
{
echo 'Verzeichnis: '.$file_name;
foreach (glob($file_name.'/*.md') as $file_name)
{
if (!stripos($file_name, 'index.md') && !preg_match('{_}', $file_name))
{
echo 'Datei: '.$file_name;
}
}
}
Rekursiv durchsuchen mit glob()
Die Funktion glob()
beginnt in der äußeren Schleife mit dem auslesen der gefundenen Verzeichnisse GLOB_ONLYDIR
und übergibt das aktuelle Verzeichnis an die innere Schleife, die dann alle enthaltenen Dateien mit dem Pattern *.md
ermittelt.
Der zusätzliche if
-Zweig soll dabei lediglich verhindern, das im bereits genannten FlightCMS, index.md
und mit beginnendem Unterstrich _
als unsichtbar gekennzeichnete Beiträge aufgelistet werden, diese sollen verborgen bleiben.
Als Ergebnis entsteht etwa die folgende Ausgabe:
kategorie-1
index.md
=> wird nicht angezeigtbeitrag-1.md
beitrag-2.md
_beitrag-3.md
=> wird ebenfalls nicht angezeigt
kategorie-2
beitrag-a.md
beitrag-b.md
Vorteile von glob()
Der größte Vorteil der Funktion glob()
liegt auf der Hand, es ist die Einfachheit mit der diese Funktion verwendet werden kann. Es reichen wenige Zeilen Code aus, um komplexe Datelisten zu maskieren und auszugeben - das ist extrem hilfreich.
Nachteile von glob()
Die Funktion glob()
ist intern sehr komplex (wer hätte es gedacht) und daher auch nicht sehr performant.
Dem aufmerksamen Leser wid allerdings aufgefallen sein, das der Code nicht unendlich rekursiv im Verzeichnisbaum hinabsteigt, sondern auf eine Stufe begrenzt ist. Es ist aber recht leicht beim Auffinden eines Verzeichnis innerhalb der inneren Schleife einen erneuten Aufruf auf sich selbst zu erzeugen und das neue Verzeichnis mit
$dir
an die äußere Schleife weiterzugeben.
28.01.2024 Kontakt@Oliver-Lohse.de glob Datei Verzeichnis Durchsuchen Rekursiv