[Snippet] require_dir($directory)

effe

Grünschnabel
Snippets, die die Welt nicht braucht:

PHP:
function require_dir($directory){
// search $directory for files to import
  $directory_handle = opendir($directory);
    while ($current_file = readdir($directory_handle)) {
      if ($current_file != "." && $current_file != "..") {
        require("$directory/$current_file");
      }
    }
  closedir($directory_handle);
}

Kurz und knapp:
require_dir($directory) durchsucht das Verzeichnis $directory nach Dateien und führt auf jede Datei ein require() durch.
Selbstverständlich sollte das Verzeichnis dafür auch spezialisiert sein, also z.B. nur Bibliotheken beinhalten.
Natürlich kann man prüfen, ob eine Datei die Endung ".php" besitzt. Wäre aber wohl nicht für alle zu gebrauchen, Nulldesign z.B. verwendet aus ästhetischen Gründen die Endung ".nd".

Wieso dies nicht bei den Tutorials steht?
- Es ist meiner Meinung nach kein Tutorial!
- Keine Zeit einem Moderator zu schreiben!


EDIT:

Bemerkt sei, dass es sich hierbei um eine Abwandlung der Referenz zum Auflisten von Dateien in einem Ordner (php.net) handelt.
 
Zuletzt bearbeitet:
Code:
function r($s,$d){while($a=readdir($d)){($a!="."&&$a!=".."&&$e="$s/$a")?(is_file($e)?require($e):r("$e",opendir($e))):'';
}}r("inc",opendir("inc"));

Sprich: Ich sehe in dem Script nicht sehr viel nutzen, aber egal, deine Sache.
 
Wenn du den Nutzen nicht siehst, wieso versuchst du dann das Skript zu verbessern? Trotzdem aber vielen Dank für den Versuch.

Sagen wir mal, du willst ein Bibliotheken-Verzeichnis (oder was auch immer) importieren:
Dann dürftest du bei deiner Version für jeden Funktionsaufruf den Verzeichnisnamen zweimal eintippen (oder wie auch immer übergeben).
Ok, in einigen Spezialfällen kann es vielleicht Vorteile haben, den Handle direkt als Argument zu übergeben - mir fällt nur grad keiner ein.
Ich weiß auch nicht, wieso du es nicht für nötig hältst, den Stream zu schließen.
Naja wenigstens ist deine Funktion selbst schön klein und sieht leet aus auch wenn das auf die Kosten der Lesbarkeit geht und die Fehlersuche erschwert.
 
Zuletzt bearbeitet:
Ich sehe in so einem Snippet schon einen großen Nutzen.
Ich beutze soetwas in meinem "CMS" selbst...
Dort habe ich ein Verzeichniss für Dateien, die eine Funktion zur Erstellung von Menüblöcken enthalten.
Ich halte es nicht für sehr konfortabel immer ein Include einzufügen, von daher habe ich es so gelöst wie es dieses Snippet auch tut.
 
Genau, so kannst du dein CMS um ein paar Includes erweitern und musst die Erweiterungen nur in das Verzeichnis reinschmeissen.

Klar, Larsi, wer ein CMS baut, wird sich diese oder eine vergleichbare Lösung sicher schon mal erstellt haben - je nach Bedarf halt. In meinem Fall ist es genau für den selben Zweck - Templatesystem mit simplen CMS-Funktionen.
 
Mein Senf dazu: In manchen Fällen ist das Includen aller Files in einem Verzeichnis durchaus sinnvoll, jedoch nur, wenn auch alle Files >wirklich< benötigt werden. Ansonsten sollte zur Freude der Performance darauf verzichtet werden.

mfg, snuu
 
Dein Senf klingt logisch ;)

Was passiert eigendlich, wenn da Bilder in dem Verzeichniss sind?
Kommt da ne Fehlermeldung?
Hat schonmal jemand Bilder includet? :D
 
Ich denke, dass da nichts Schlimmes passieren wird. Beim Includen einer Datei, wird ja vom PHP- in den HTML-Modus gewechselt. Also wird der Dateiinhalt des Bildes als HTML-Code interpretiert.

mfg, snuu
 
Hi,
Das kommt auf deine verwendete Konvention an.
Wenn du keine nutzt sondern einfach folgendes aufrusfst udn die Datei mail bild.php nennst

<?php
include "bild.gif";
?>

würde das Bild wohl angezeigt werden.
Machst du aber die Datei bild.php zu HTML also
<html>
<head></head>
<?php
include "bild.gif";
?>
</html>

Für der "Stream" angezeigt. etwa sowas:
GIF89aÈÈÄÿfÿ......

Du siehst, mache Dinge machen keinen Sinn, manche schon, der Kontext ist interessant und das Wissen um Mehrwert und Nutzen. Deshalb sage ich auch zum vorherigen Thread nichts :)
 
Zurück