In PHP wird SPL_AUTOLOAD_register verwendet, um eine oder mehrere Autoloadfunktionen zu registrieren, um die Ladelogik automatisch auszuführen, wenn eine Klasse oder Schnittstelle verwendet wird, jedoch nicht enthalten ist. Ein allgemeines Szenario besteht darin, Namespaces zu kombinieren, um Klassendateien in verschiedenen Verzeichnissen zu organisieren und häufig über automatische Lader zu fordern oder einzubeziehen .
In einigen Fällen müssen wir jedoch eine registrierte Lastfunktion entfernen , und dann können wir spl_autoload_unregister verwenden.
registrieren:
<span><span><span class="hljs-title function_ invoke__">spl_autoload_register</span></span><span>(</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$autoload_function</span></span><span>);
</span></span>Entfernen:
<span><span><span class="hljs-title function_ invoke__">spl_autoload_unregister</span></span><span>(</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$autoload_function</span></span><span>);
</span></span>Die $ autoload_function hier muss mit der Registrierungszeit übereinstimmen, andernfalls kann sie nicht korrekt entfernt werden.
Wenn eine im Namespace definierte Klassenmethode als Ladefunktion verwendet wird, achten Sie darauf, dass die an spl_autoload_register und spl_autoload_unregister übergebenen Werte den vollständigen Namespace enthalten sollten. Zum Beispiel:
<span><span><span class="hljs-title function_ invoke__">spl_autoload_register</span></span><span>(</span><span><span class="hljs-keyword">__NAMESPACE__</span></span><span> . </span><span><span class="hljs-string">'\Loader::autoloadA'</span></span><span>);
</span></span>Wenn es als Loader :: Autoloada ohne Namespace -Präfix geschrieben ist, stimmt spl_autoload_unregister möglicherweise nicht überein, was zu einem Versagen führt.
Wechseln mehrerer Ladestrategien <br> Einige Frameworks oder Bibliotheken können mehrere Lastfunktionen in Folge registrieren, um mit unterschiedlichen Verzeichnissen oder Lastregeln kompatibel zu sein. Nachdem Sie zu einer bestimmten Stufe gelaufen sind, müssen Sie nur einen von ihnen behalten und die anderen können durch spl_autoload_unregister entfernen.
Temporärer Lader <br> Während der Debugging- oder Migrationsphase kann ein temporärer Debugging -Lader registriert und entfernt werden, nachdem die Initialisierung abgeschlossen ist, um die formale Logik zu vermeiden.
Die Parameter von spl_autoload_unregister müssen genau mit denen zum Zeitpunkt der Registrierung übereinstimmen.
Schreiben Sie in einer Namespace -Umgebung einen voll qualifizierten Namen wie __NameSpace__. '\ Class :: methode' .
Durch das Entfernen eines ungültigen Laders können wiederholte Trigger oder ein falsches Laden vermieden werden.
Durch rationales Gebrauch von spl_autoload_register und spl_autoload_unregister können wir den automatischen Lademechanismus von PHP flexibel verwalten, insbesondere in großen Projekten und Multi-NamesPace-Umgebungen, was es wichtiger macht.