\ app \ models \ user
verwendet, sucht der Autoloader nach einer Datei unter app/models/user.php
. Diese Zuordnung wird normalerweise in der Konfiguration der Anwendung definiert, häufig in den Abschnitt Komponenten
unter autoload
. Das Array psr4
ist die häufig verwendete Methode. Es bildet Namespaces auf Verzeichnisse. Sie können es anpassen, indem Sie Einträge in Ihre Anwendungskonfiguration hinzufügen oder ändern. Zum Hinzufügen eines neuen Namespace -Mapping können Sie beispielsweise die Konfigurationsdatei Ihrer Anwendung Folgendes hinzufügen (z. B. config/main.php
): <codes class="PHP"> 'Komponenten' = & gt; ['autoload' = & gt; ['psr4' = & gt; ['App \\' = & gt; ['@app', // alias zum Basisverzeichnis deiner Anwendung], 'Anbieter \\ Mylibrary \\' = & gt; ['@Vendor/Mylibrary', // Pfad zu Ihrer Drittanbieter-Bibliothek],],],], </codes>
In diesem Beispiel wird ein Mapping für den -Vendor \ mylibrary
Namespace zum @-Vendor/Mylibrary
-Direktory hinzugefügt. Sie können diese Pfade anpassen, um Ihre Projektstruktur widerzuspiegeln. Das Ändern des classmap
-Array funktioniert ähnlich; Sie kartieren explizit Klassennamen auf ihre Dateipfade. Denken Sie daran, den Laufzeit-Cache der Anwendung nach Änderungen der Autoloaderkonfiguration für die zu Wirkungsänderungen vorgenommen zu haben. Der Suchraum für den Autoloader. Vermeiden Sie nach Möglichkeit tief verschachtelte Namespaces. Gruppenbezogene Klassen logischerweise, um die Anzahl der Verzeichnisse zu minimieren, die der Autoloader zum Durchqueren benötigt. Der classmap
bietet eine direkte Zuordnung, wobei das Verzeichnistraversal in PSR-4 inhärent ist. Stellen Sie sicher, dass Ihr Caching -System ordnungsgemäß konfiguriert ist und effizient funktioniert. Ein langsamer oder nicht ordnungsgemäß konfigurierter Cache kann die Leistungsvorteile des Autoloaders negieren. Opcode Caching Stores wurde PHP -Code im Speicher kompiliert, wodurch der Overhead der wiederholten Datei -Parsen und -Kompilation verringert wird, wodurch die Gesamtanwendungsleistung, einschließlich Autolading, verbessert wird. Verwenden Sie die Abhängigkeitsinjektion oder faule Ladetechniken, um Klassen nur dann zu laden, wenn sie tatsächlich benötigt werden. Das Array psr4
korrekt den Namenspaces in den tatsächlichen Verzeichnisorten Ihrer Klassen. Tippfehler oder falsche Pfade sind häufige Quellen für Autoloading -Fehler. Wenn die Klasse A von Klasse B abhängt und die Klasse B von Klasse A abhängt, kann der Autoloader eine unendliche Schleife eingeben, was zu Fehlern führt. Wenn mehrere Einträge in denselben Namespace zugeordnet sind, kann ein unvorhersehbares Verhalten auftreten. Wenn dies nicht der Fall ist, kann dies verhindern, dass die Änderungen wirksam werden. Verwenden Sie es bedarf. Angenommen, Ihre Bibliothek von Drittanbietern befindet sich im Verzeichnis
(ein Standardort für Komponisten-verwaltete Pakete). Wenn die Bibliothek PSR-4 Autoloading verwendet (wie die meisten modernen Bibliotheken), müssen Sie dem psr4
Array in Ihrer config/Main.php
eine Zuordnung für den Namespace hinzufügen. Zum Beispiel:
<code class="php"> 'Komponenten' = & gt; ['autoload' = & gt; ['psr4' = & gt; [// ... bestehende Mappings ... 'myvendor \\ mylibrary \\' = & gt; ['@Anbieter/Mylibrary'], // Ersetzen Sie durch den tatsächlichen Anbieter und den Bibliothekspfad],],], </code>
Dies setzt davon aus, dass der Namespace der Bibliothek myVendor \ mylibrary
ist und der Quellcode in @vendor/mylibrary
. Wenn die Bibliothek einen anderen Autoloading-Mechanismus (z. B. PSR-0 oder einen benutzerdefinierten Autoloader) verwendet, müssen Sie möglicherweise ihre Dokumentation für bestimmte Anweisungen zur Integration konsultieren. In einigen Fällen müssen Sie möglicherweise die Autoloader -Datei der Bibliothek manuell einfügen, bevor der Autoloader von YII beginnt. Denken Sie daran, Platzhalter wie myVendor
, mylibrary
und @Anbieter/Mylibrary
mit den Details Ihrer tatsächlichen Bibliothek zu ersetzen. Wenn Ihre Bibliothek keinen Komponisten verwendet, müssen Sie möglicherweise den Pfad der Bibliothek zu Ihrem PHP -Pfad hinzufügen.
Das obige ist der detaillierte Inhalt vonWie funktioniert der Autoloader von YII und wie kann ich ihn anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!