Classloader ist eine PHP -Bibliothek für Autoloading -Klassen. Klassenautolading bedeutet, dass Klassen nur dann geladen werden, wenn sie tatsächlich benötigt werden, anstatt jede Klassendatei für jede Ausführung aufzunehmen. Dies reduziert das Laden von Overhead, insbesondere auf größeren Websites, da nur einige der Klassendateien geladen werden müssen. Normalerweise werden die Klassen auch dynamisch aus Dateien mit Dateinamen basierend auf dem Namespace und Klassennamen geladen. Dies erleichtert auch die Verwaltung einer großen Anzahl von Klassendateien.
Diese Bibliothek unterstützt zwei der aktuellen Standards für Autoloadingklassen, nämlich die PSR-0 und PSR-4. Die Grundidee hinter diesen Standards besteht darin, dass Klassendateien in Verzeichnissen basierend auf ihrem Namespace und in Dateien, die nach der Klasse benannt sind, befinden. Der Hauptunterschied zwischen diesen beiden Standards besteht darin, dass PSR-4 nicht erforderlich ist, dass der gesamte Namespace in der Verzeichnishierarchie vorhanden ist.
Da jedoch der Betrieb der tatsächlichen Klassendateien tendenziell relativ kostspielig ist, bietet diese Bibliothek auch grundlegende Caching -Mechanismen, die es ermöglichen, die Klassendateiorte in einer PHP -Datei zu zwischengespeichern. Mit dem Caching wird der Leistungsunterschied zwischen Autolading und Laden der Dateien manuell vernachlässigbar.
Die API -Dokumentation, die mit Apigen generiert werden kann, kann online unter: http://kit.riimu.net/api/classloader/ gelesen werden
Der einfachste Weg, diese Bibliothek zu installieren, besteht darin, Komponist für Ihre Abhängigkeiten zu verwenden. Um diese Bibliothek über den Komponisten zu installieren, befolgen Sie einfach die beiden Schritte:
Erwerben Sie den composer.phar , indem Sie die Befehlszeileninstallation der Komponisten in Ihrem Projektroot ausführen.
Sobald Sie das Installationsskript ausgeführt haben, sollten Sie die composer.phar -Datei in Ihrem Projektroot haben und den folgenden Befehl ausführen:
php composer.phar require "riimu/kit-classloader:^4.4"
Nach der Installation dieser Bibliothek über einen Komponisten können Sie die Bibliothek laden, indem Sie die Datei vendor/autoload.php einbeziehen, die während der Installation vom Komponisten generiert wurde.
Wenn Sie bereits mit Composer vertraut sind, können Sie die Bibliothek alternativ als Abhängigkeit hinzufügen, indem Sie die folgende composer.json -Datei zu Ihrem Projekt hinzufügen und den Befehl composer install ausführen:
{
"require" : {
"riimu/kit-classloader" : " ^4.4 "
}
} Wenn Sie den Komponisten nicht zum Laden der Bibliothek verwenden möchten, können Sie die Bibliothek auch manuell herunterladen, indem Sie die neueste Version herunterladen und den src -Ordner an Ihr Projekt extrahieren. Sie können dann die bereitgestellte Datei src/autoload.php einfügen, um die Bibliotheksklassen zu laden.
Der ClassLoader unterstützt das Autolading im Sinne der PSR-0- und PSR-4-Standards über die Methoden addBasePath() bzw. addPrefixPath() . Sie müssen diese Standards nicht verstehen, um diese Bibliothek zu verwenden. Verwenden Sie einfach die Methode, die für Sie am besten geeignet ist.
Das Autoloading der PSR-0-Klasse definiert, dass Klassendateien in einem Verzeichnisbaum platziert werden müssen, der ihren Namespace widerspiegelt. Beispielsweise könnte sich die Klasse 'Foo bar baz' in einer Datei '/path/to/classes/foo/bar/baz.php' befinden. Diese Methode ist normalerweise die einfachste Möglichkeit, Ihre Klassendateien zu platzieren.
Mit der Methode addBasePath() können Sie die Basisverzeichnisse definieren, in denen Sie nach Klassen suchen können. Um die oben genannte Klasse zu laden, können Sie den folgenden Code verwenden:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();Wenn ein bestimmtes Verzeichnis nur für einen bestimmten Namespace gilt, können Sie auch den zweiten Parameter verwenden, um den Namespace zu definieren. Das Verzeichnis muss jedoch noch auf das Basisverzeichnis für den Namespace verweisen. Zum Beispiel:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();Beachten Sie, dass PSR-0 auch besagt, dass es als Namespace-Separatoren behandelt werden (aber nicht in Namespaces). Selbst wenn Ihre Klasse "foo bar_baz" genannt wurde, würden beide oben genannten Beispiele noch funktionieren. Auch wenn Ihre Klassennamenspaces unter Verwendung von Unterstrichen im Klassennamen definiert werden, müssen Sie Backslashes im Namespace -Argument verwenden.
Im Gegensatz zu PSR-0 erfordert der Autoload-Standard der PSR-4-Klasse keine Klassen in einem Verzeichnisbaum, der ihren gesamten Namespace widerspiegelt. Stattdessen kann ein Teil des Namespace durch einen bestimmten Pfad ersetzt werden.
Wenn sich beispielsweise Ihre Klasse 'foo bar baz' in der Datei '/path/to/library/baz.php' befindet, können Sie den Pfad mit addPrefixPath() registrieren und den Namespace angeben, wie im folgenden Beispiel demonstriert:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ( ' /path/to/Library/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz (); Dies ermöglicht viel kürzere Verzeichnisstrukturen, da der gesamte Namespace im Verzeichnisbaum nicht reflektiert werden muss. Es ist auch möglich, das Namespace -Argument wegzulassen. In diesem Fall funktioniert der Pfad genauso wie die Pfade, die über addBasePath() hinzugefügt wurden, mit Ausnahme der Tatsache, dass unterstrichen im Klassennamen nicht als Namespace -Separatoren behandelt werden.
Während Sie einfach den Pfad mehrmals auf den Pfad hinzufügen können, können Sie mehrere Pfade mit einem Array hinzufügen. Dies erleichtert die Konfiguration normalerweise erheblich. Sie können beispielsweise mehrere Basispfade hinzufügen, indem Sie ein Array bereitstellen:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' /path/to/classes/ ' ,
' /other/path/ ' ,
]);
$ loader -> register ();Oder Sie können einen namespace -spezifischen Pfade hinzufügen, indem Sie ein assoziatives Array bereitstellen, das die Namespaces mithilfe der Array -Tasten definiert:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' FooBar ' => ' /path/to/classes/ ' ,
' OtherNamesapace ' => [ ' /other/path/ ' , ' /some/other ' ],
]);
$ loader -> register ();Wie im obigen Beispiel gezeigt, können Sie auch eine Liste von Pfaden für einen bestimmten Namespace angeben.
Die Suche nach Klassen im Dateisystem auf jeder Anfrage ist eine kostspielige Angelegenheit. Es wird dringend empfohlen, die Dateiorte so zu leiten, dass sie nicht auf jeder Anfrage durchsucht werden müssen. Schließlich neigen die Klassendateien nicht dazu, sich im Dateisystem zu bewegen.
Diese Bibliothek bietet ein sehr einfaches Caching -System über FileCacheClassLoader . Die Klasse speichert die Dateiorte in einer einzelnen PHP -Datei, die auf jeder Anforderung geladen wird, anstatt manuell nach den Dateien zu suchen.
Die Verwendung des FileCacheClassLoader unterscheidet sich nicht wesentlich von der Verwendung des ClassLoader . Sie müssen lediglich den Pfad zu einer beschreibbaren Cache -Datei im Konstruktor bereitstellen. Die Datei wird verwendet, um die Klassenorte zu speichern und wird neu geschrieben, wenn neue Klassendateien ermittelt werden. Zum Beispiel:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader FileCacheClassLoader ( __DIR__ . ' /cache.php ' );
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();Diese Bibliothek ist Copyright (C) 2012-2017 Riikka Kalliomäki.
Siehe Lizenz für Lizenz und Kopieren von Informationen.