Warum sich mit dem automatischen Laden in WordPress herumschlagen, Teil 3
Im letzten Beitrag habe ich gesagt, dass wir uns nicht denselben Luxus leisten können, den statisch typisierte, kompilierte Sprachen haben. Insbesondere sprach ich über die Idee, sich nicht mit Autoloadern herumschlagen zu müssen.
Stattdessen können kompilierte Sprachen alle Dateien, aus denen das Programm besteht, verarbeiten, verarbeiten und in einer einzigen Binärdatei bündeln.
Aber um das zu tun, braucht es eine bestimmte Art von Programm, um das zu tun.
Autoloading in WordPress: Linker und Autoloader
Das heißt, es verwendet ein Dienstprogramm namens Linker. Ich werde das kurz behandeln, aber die Rolle zu sehen, die es im Kontext kompilierter Sprachen spielt, kann helfen, eine Analogie dazu zu ziehen, wie das automatische Laden in WordPress (und PHP) funktioniert.
Was ist ein Linker?
Abhängig von der Sprache, mit der Sie arbeiten, insbesondere bei objektorientierten Programmiersprachen, ist es wahrscheinlich, dass Code auf mehrere Dateien verteilt wird.
Außerdem wird jede dieser Dateien in ihren Paketen gebündelt (wir bezeichnen diese als Namespaces wie PHP, und die meisten kompilierten Sprachen tun dasselbe). Nehmen Sie also zu Demonstrationszwecken an, dass die Dateien in ihren Namespaces enthalten sind.
Dann haben Sie in der gesamten Codebasis all diese Dateien, die über Namespaces miteinander verbunden sind, aber auf separate Dateien verteilt sind.
Wenn es an der Zeit ist, all dies in eine einzelne, ausführbare Binärdatei zu kompilieren, analysiert ein Programm namens Linker den Code und funktioniert wie von Zauberhand, um eine einzelne, ausführbare Binärdatei zu erstellen (im Gegensatz zu einer Sammlung von Dateien, wie wir es gewohnt sind). PHP-basierte Projekte).
Und Autoloading?
Was sind also die Ähnlichkeiten zwischen dem automatischen Laden und dem Verknüpfen? Wie bereits erwähnt, befinden sich die Projekte, die wir in WordPress (und PHP) erstellen, konsequent in separaten Dateien. Das heißt, sie werden niemals in eine Datei kompiliert.
Ich würde sagen, es war einmal (obwohl dies immer noch vorkommt), wir verwenden include_once oder require_once, um alle Abhängigkeiten einzubringen, die wir brauchen. Das automatische Laden macht dies jedoch überflüssig.
Manuelles Schreiben eines Autoloaders (ohne Verwendung von PSR4).
Stattdessen kann ein Autoloader den Code nehmen, den wir haben, wenn wir beispielsweise eine Klasse instanziieren, und dann die Datei automatisch laden (daher ihr Name), ohne dass die Datei manuell eingefügt werden muss.
Die Analogie
Während ein Linker die Codebasis eines Programms analysiert und die Binärdatei automatisch zusammenfügt, benötigt ein Autoloader eine Art Konfiguration, um ihm mitzuteilen, wo sich die Klassen befinden, wie eine Datei im Dateisystem mit ihrem Namensraum und Klassennamen zu finden ist, und demnächst.
Darüber hinaus gibt es verschiedene Möglichkeiten, dies zu tun, je nachdem, ob Sie sich für etwas wie PSR-4 oder eine andere Ladestrategie entscheiden. Aber das würde den Rahmen dieses Beitrags sprengen.
Das ist es
Die Idee hinter all dem ist zu verstehen, wie statisch typisierte Sprachen, die oft – wenn auch nicht immer – kompilierte Sprachen sind, und wie dynamisch typisierte – die oft nicht kompiliert sind (denken Sie an JavaScript, PHP usw.) – wenn auch ähnlich funktionieren können verschiedene Wege.
Zusamenfassend:
- kompilierte Sprachen verwenden Linker,
- Dynamische Sprachen verwenden Autoloader.
Und das ist wirklich alles, was dazu gehört.
Aber warum ist das wichtig? Um die Vorteile des automatischen Ladens in WordPress zu verstehen und eine Grundlage für fortgeschrittenere Themen zu haben, finde ich es wichtig zu verstehen, wie und warum wir bestimmte Dinge tun.
Und nicht zuletzt kann es uns helfen, bessere Entwickler zu sein.
