Kann ich in PHP ein Verzeichnis von Skripten einfügen?
dh anstelle von:
include('classes/Class1.php');
include('classes/Class2.php');
gibt es so etwas wie:
include('classes/*');
Es scheint keinen guten Weg zu finden, eine Sammlung von ungefähr 10 Unterklassen für eine bestimmte Klasse aufzunehmen.
get_include_path()
kann die Ladereihenfolge immer noch nicht automatisch bestimmen (Basisklasse kann NACH erweiterter Klasse geladen werden, was zu Fehlern führt)Hier ist die Art und Weise, wie ich viele Klassen aus mehreren Ordnern in PHP 5 einbinde. Dies funktioniert jedoch nur, wenn Sie Klassen haben.
quelle
Mir ist klar, dass dies ein älterer Beitrag ist, ABER ... BEINHALTEN SIE IHRE KLASSEN NICHT ... verwenden Sie stattdessen __autoload
Wenn Sie dann eine neue Klasse aufrufen, die noch nicht enthalten ist, wird PHP automatisch __autoload auslösen und für Sie einschließen
quelle
Wenn Sie PHP 5 verwenden, möchten Sie möglicherweise stattdessen Autoload verwenden.
quelle
Dies ist nur eine Modifikation von Karstens Code
quelle
Wie das 2017 geht:
Empfohlen von der PHP-Dokumentation hier: Autoloading-Klassen
quelle
autoload
es nur dann ins Spiel kommt, wenn jemand versucht, dh ein Objekt der Klasse zu erstellen, das noch nicht geladen wurde.Sie können set_include_path verwenden :
http://php.net/manual/en/function.set-include-path.php
quelle
classes/
bei Verwendung voninclude
/require
Wenn Sie alle in ein Verzeichnis UND seine Unterverzeichnisse aufnehmen möchten:
Vergessen Sie nicht, dass Ihre Dateien in alphabetischer Reihenfolge angezeigt werden.
quelle
The entries are returned in the order in which they are stored by the filesystem.
- php.net/manual/en/function.readdir.phpWenn Sie eine Reihe von Klassen einschließen möchten, ohne jede Klasse gleichzeitig definieren zu müssen, können Sie Folgendes verwenden:
Auf diese Weise können Sie einfach die Klasse in der PHP-Datei definieren, die die Klasse enthält, und nicht eine ganze Liste von
$thisclass = new thisclass();
Wie gut werden alle Dateien verarbeitet? Ich bin mir nicht sicher, ob dies zu einem leichten Geschwindigkeitsabfall führen könnte.
quelle
Wenn es KEINE Abhängigkeiten zwischen Dateien gibt ... ist hier eine rekursive Funktion, um ALLE PHP-Dateien in ALLE Unterverzeichnisse einzuschließen:
quelle
quelle
Ich schlage vor, dass Sie eine readdir () -Funktion verwenden und dann die Dateien schleifen und einschließen (siehe das erste Beispiel auf dieser Seite).
quelle
Schreiben Sie keine Funktion (), um Dateien in ein Verzeichnis aufzunehmen. Möglicherweise verlieren Sie die variablen Bereiche und müssen möglicherweise "global" verwenden. Schleifen Sie einfach die Dateien.
Außerdem können Probleme auftreten, wenn eine eingeschlossene Datei einen Klassennamen hat, der sich auf die andere Klasse erstreckt, die in der anderen Datei definiert ist - die noch nicht enthalten ist. Also sei vorsichtig.
quelle