Hi Ich entwickle eine Bibliothek für Gitarrenakkorde. In einigen Dateien in der Bibliothek habe ich so etwas:
%Vor%Wie kann ich diese Bibliothek so erstellen, dass sie nicht wissen muss, wo die anderen Bibliotheksdateien sind?
Auf diese Weise könnte eine Person die Bibliotheksdateien in einem beliebigen Verzeichnis haben?
Bearbeiten: Entfernte zweite Frage.
Erstellen Sie Autoloader für alle Standorte, an denen sich diese Klassen möglicherweise befinden.
Zum Beispiel:
%Vor% Wenn Sie dann die Chord
-Klasse laden möchten und wissen, dass sie sich in Ihrem lib
-Ordner befindet, erledigt der Autoloader die Arbeit für Sie, wenn Sie Folgendes tun:
Sie können viele verschiedene Autoloader-Callbacks mit spl_autoload_register
Irgendwo müssen Sie den Ordnernamen angeben, wenn Sie nicht alle Ihre Klassen in eine Datei aufnehmen wollen. Sie können es aber auch irgendwo machen, dass der Benutzer nur einmal einstellen muss:
%Vor%Für die Behandlung verschiedener Dateitypen können Sie eine andere Einstellung wie $ db_type vornehmen, die der Benutzer entweder auf "MYSQL", "FILE", "XML" usw. setzt. Und wo Sie Aufrufe an die Datenbank machen, verwenden Sie a Wechseln Sie die Anweisung, um zu sehen, welche Datenbankmethode sie verwenden, und ändern Sie den Aufruf entsprechend.
Bearbeiten: Es lohnt sich auch, die __autoload-Funktion von PHP zu lesen
Wenn Ihre Bibliothek alle oder die meisten der enthaltenen Klassen verwendet, dann sollten Sie alle Klassen, die sich auf Ihre Bibliothek beziehen, in dieselbe Datei einfügen. Andere Lösungen werden nur dazu führen, dass mehr Code hinzugefügt wird. In diesem Fall sollten Sie wahrscheinlich nur mit Ihrer aktuellen Methode fortfahren.
Wenn Sie möchten, dass die Dateien für Entwicklungszwecke aufgeteilt werden, tun Sie dies auf jeden Fall, aber Sie können sie dennoch in eine Datei für die Produktionsnutzung verpacken, damit sie leicht eingefügt werden können.
Sie sollten Namespaces und autoloaders .
Nehmen wir an, Sie haben alle Ihre Klassen im 'GuitarChords' Namespace - so können Sie einfach eine Autoload-Funktion ähnlich der folgenden erstellen (vorausgesetzt, die Datei befindet sich im übergeordneten Verzeichnis von "lib"):
%Vor%Ich denke, es ist besser, eine Autoload-Funktion für jeden Library-Set / Namespace spezifisch zu registrieren. Das Iterieren von Verzeichnissen und das Verwenden von include_once, file_exists usw. kann je nach Komplexität Ihres Systems zu einem unangenehmen E / A-Overhead führen.
Tags und Links php