✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Warum sich mit dem automatischen Laden in WordPress herumschlagen, Teil 1

18

Eines der einfachsten Dinge, die wir tun können, wenn wir an WordPress-Plugins arbeiten, ist das  Löschen von require_once- oder include_once- Anweisungen in unserem gesamten Code.

Und warum nicht? Es ist eine einfache Möglichkeit, alle erforderlichen Dateien oder Abhängigkeiten für eine bestimmte Klasse einzubringen, sie leicht lesbar zu machen und sich keine Gedanken über das Erstellen riesiger Codedateien machen zu müssen. Das heißt, es hilft uns, das zu vereinfachen, was wir schreiben, damit unsere Klassen [meistens oder idealerweise] das tun können, was sie gut machen.

Wenn Sie diese Seite jedoch im letzten Jahr oder so gelesen haben, wissen Sie, dass ich ein Fan des automatischen Ladens bin, und meiner Meinung nach sollte jeder, der mit PHP arbeitet – unabhängig davon, ob Sie WordPress oder eine andere Plattform verwenden – dies tun verwenden.

Aber es wirft zwei Fragen auf, besonders wenn Sie gerade erst anfangen:

  1. Warum sich mit dem automatischen Laden beschäftigen, wenn es andere Möglichkeiten gibt, mit Ladeabhängigkeiten umzugehen?
  2. Wie schlägt sich das automatische Laden im Vergleich zu kompilierten Sprachen?

Daher dachte ich, dass es sich lohnen würde, dies in den nächsten Posts zu beantworten.

Warum sich mit dem automatischen Laden beschäftigen?

Die Kurzfassung ist dies:

  1. require_once und include_once können zu Code führen, der schwer zu debuggen ist,
  2. Es ist schwierig, Code zu verfolgen.

Aber wieso?

1 Debuggen ist schwierig

Wenn beim Schreiben von Code irgendetwas sicher ist, dann dass es etwas geben wird, das nicht wie beabsichtigt funktioniert. Es liegt in der Natur dessen, was wir tun, oder?

Wenn es also darum geht, Code zu debuggen, haben wir alle unsere Strategien.

  • Einige von uns entscheiden sich für echo oder var_dump, um Code zu verfolgen,
  • Verwenden Sie ein Plugin in WordPress,
  • andere verwenden einen Debugger.

Obwohl es in diesem Beitrag nicht darum geht, wie man debuggt, ist es die Tatsache, dass wir debuggen müssen. Wenn wir also wissen, dass wir es tun müssen, sollten wir es uns nicht so einfach wie möglich machen?

PHP ist eine dynamisch typisierte Sprache, also gibt es im Allgemeinen eine Menge Dinge, um die wir uns kümmern, wenn wir den Code schreiben. Das heißt, bestimmte Dinge werden abgeleitet oder erzwungen, wenn der Code ausgeführt wird.

Angenommen, Sie arbeiten mit einer Zeichenfolge und vergleichen sie mit einer Zahl. Der Interpreter wird tun, was er kann, um zu erraten, was Sie tun (wollen Sie die Zeichenfolge in eine Ganzzahl analysieren oder umgekehrt?) und dann damit arbeiten.

Das Arbeiten mit Variablen allein kann eine Präzisionsübung sein, da wir möchten, dass unser Code so gelesen wird, wie wir es beabsichtigen. Warum es dem Dolmetscher überlassen, zu erraten, was wir meinen? Und wenn der Dolmetscher zusätzliche Arbeit leisten muss, tun dies sicherlich die Menschen.

Zu diesem Zweck, wenn wir wissen, dass Fehler eingeführt werden und wir wissen, dass es Möglichkeiten gibt, saubereren Code zu schreiben, warum sollten wir es nicht tun?

2 Nachverfolgung ist schwierig (oder vielleicht schwieriger?)

Aber das ist immer noch kein Grund, warum wir uns auf so etwas wie einen Autoloader statt auf eingebaute Funktionen der Sprache verlassen sollten, oder?

Bedenken Sie Folgendes: Angenommen, Sie durchsuchen eine Datei und versuchen, einen Fehler zu finden, und Sie stoßen auf eine Funktion, die Code enthält, include_once verwendet und dann anderen Code verwendet.

Das bedeutet, dass Sie den Code lesen, dies im Kopf behalten, in eine andere Datei springen, diesen Code verstehen und dann zur ursprünglichen Datei zurückkehren müssen. Und dies setzt voraus, dass die zweite Datei auch keine anderen Dateien enthält oder benötigt .

Warum sich mit dem automatischen Laden in WordPress herumschlagen, Teil 1

Es heißt nicht umsonst Spaghetti-Code.

Nachdem dies gesagt wurde, können Sie die missliche Lage sehen, die dies mit sich bringt, wenn Sie sich dafür entscheiden, diesen Code im Rest Ihres Programms zu verschachteln. Kurz gesagt, Sie haben die Einbeziehung von Abhängigkeiten verschachtelt, was es von Natur aus schwieriger macht, nachzuverfolgen, wo etwas schief läuft.

Das soll nicht heißen, dass das automatische Laden dies automatisch behebt, aber es soll sagen, dass es nicht so sein muss. Stattdessen können Sie Code schreiben, der Klassen instanziiert, Methoden aufruft und dann Code ausführt, ohne dass etwas manuell eingefügt werden muss.

Besser lesbarer, rückverfolgbarer Code

Wenn ich das tue, finde ich, dass es uns dazu zwingt, saubereren Code zu schreiben, wohl besser wartbaren Code. Es macht es auch einfacher, Code zu schreiben, den wir leichter nachverfolgen können, und der mit einem Debugger einfacher zu nutzen ist.

Das heißt, wir können an bestimmten Stellen in unserem Code Breakpoints setzen, den Debugger automatisch in die aufgerufene Klasse führen und wieder zu der Funktion zurückkehren, die sie aufgerufen hat.

Das bedeutet nicht, dass es nicht anders geht, aber die Vorteile überwiegen bei weitem die Alternativen. Und natürlich bleibt die Frage, warum das automatische Laden (oder das Einbinden von Dateien von Drittanbietern) überhaupt benötigt wird.

Aber darum geht es im zweiten Teil der Serie.

Andere Lektüre

Mein Beitrag zu Namespaces und Autoloading in WordPress sowie der Simple Autoloader für WordPress sind zwei weitere Ressourcen, die ich offensichtlich im Zusammenhang mit diesem speziellen Beitrag finde. Wenn Sie also Zeit haben, schauen Sie sie sich an (und zögern Sie nicht, ein Problem oder eine Pull-Anforderung für das einfache Autoloader-Projekt zu öffnen).

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen