Eine PHP-Bibliothek erstellen, wie kann man sie unabhängig machen?

8

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.

    
carlosdubusm 15.09.2011, 22:07
quelle

5 Antworten

7

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:

%Vor%

Sie können viele verschiedene Autoloader-Callbacks mit spl_autoload_register

    
Neal 15.09.2011, 22:13
quelle
1

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

    
alecananian 15.09.2011 22:11
quelle
1

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.

    
Fake Code Monkey Rashid 15.09.2011 22:08
quelle
0

Vielleicht möchten Sie Zend AutoLoader ausprobieren.

    
JRL 15.09.2011 22:15
quelle
0

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.

    
Mikk 15.09.2011 23:08
quelle

Tags und Links