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

Datenbankabfragen zum schnellen Aktualisieren von Daten, Teil 2

5

Dies ist der zweite und letzte Teil einer Reihe über – wie der Titel schon sagt – direkte Datenbankabfragen. Insbesondere geht es darum, den Post-Status zu ändern (aber es ist für mehr als das relevant).

Foto von Ross Findon auf Unsplash

Aus dem vorherigen Beitrag:

Dies ist ein weiterer Beitrag, der veranschaulichen wird, wie man $wpdb verwendet, um Informationen basierend auf Metadaten schnell zu aktualisieren.

Und der in diesem Beitrag bereitgestellte Code funktioniert, aber wenn Sie ihn objektorientierter gestalten möchten, gibt es noch mehr Arbeit, die getan werden kann.

Bevor Sie jedoch zum eigentlichen Beitrag übergehen, ist es wichtig zu beachten, dass bei der objektorientierten Programmierung viel Arbeit in das Klassendesign und die Erstellung von Abstraktionsebenen gesteckt werden kann.

Irgendwann müssen Sie die sprichwörtliche Grenze ziehen, wann Sie Schnittstellen verwenden, wie granular Ihre Klassen in Bezug auf das, was sie abstrahieren, sein werden und dergleichen.

Und der Zweck dieses Beitrags ist es, ein besseres objektorientiertes Design bereitzustellen, aber es ist keine Übung, dies so optimal wie möglich zu machen. Ich diskutiere solche Themen in einer anderen Serie von Beiträgen.

Aber denken Sie daran, wenn Sie den Code im Rest des Beitrags durchlesen.

Datenbankabfragen zum schnellen Aktualisieren von Daten, Teil 2

Da, wo wir aufgehört haben, haben wir eine einzelne Funktion, die die folgenden Dinge tut:

  1. Abrufen aller Beiträge, die einem bestimmten Metaschlüssel zugeordnet sind,
  2. bestimmen, ob wir vorzeitig aussteigen müssen,
  3. Aktualisieren Sie den Beitragsstatus aller vorhandenen Beiträge.

Das erste, was zu beachten ist, ist, dass eine einzelne Funktion zu viel ist, also muss sie in mehrere andere Funktionen aufgeteilt werden. Und da es objektorientiert ist, müssen wir sicherstellen, dass das, was eine Funktion tut, nicht unbedingt auf vorherigen Schritten basiert – genau darum geht es bei der prozeduralen Programmierung.

Stattdessen werden wir diese Gelegenheit nutzen, um Funktionen einzurichten, damit sie mit allen Daten arbeiten, die ihnen übergeben werden, unabhängig davon, wie sie dorthin gelangt sind.

Schließlich müssen Sie als Entwickler entscheiden, ob Sie dafür eine einzelne Klasse, mehr als eine Klasse oder eine Reihe verwandter Klassen haben möchten, die von einer übergeordneten Klasse erben.

Auch hier geht es darum, wie abstrakt Sie den Code gestalten möchten.

Lassen Sie uns jetzt jedoch mit dem Aufbrechen der Dinge fortfahren.

1 Holen Sie sich die Post-IDs mit dem zugehörigen Metaschlüssel

Genau wie im ersten Beitrag möchten wir sicherstellen, dass wir Beitrags-IDs abrufen, die sich auf einen bestimmten Metaschlüssel beziehen.

Um diese Funktion so flexibel wie möglich zu gestalten, richten wir sie so ein:

  • akzeptiere den Metaschlüssel als Zeichenfolge,
  • gibt ein Array zurück

Die Funktion sieht dann etwa so aus:

Im ersten Beitrag haben wir dies in drei Schritte unterteilt (die ebenfalls oben beschrieben sind). Hier können wir jedoch den zweiten und dritten Schritt in einer einzigen Funktion kombinieren.

2 Aktualisieren Sie den Beitragsstatus

Wie ich bereits erwähnt habe, besteht der eine Aspekt der objektorientierten Programmierung darin, sicherzustellen, dass die von uns verwendeten Funktionen unabhängig davon sind, wie die Daten generiert wurden, die sie erhalten.

Stattdessen müssen sie einen einzelnen Algorithmus ausführen, um sich auf die Daten zu konzentrieren, die an die Funktion übergeben werden. In diesem Fall möchten wir den Ergebnissatz – bei dem es sich um Post-IDs handelt – nehmen und ihren Post-Status aktualisieren, sodass er auf draft festgelegt ist .

Das bedeutet, dass die Funktion ein Array akzeptiert, aber nichts zurückgibt. Möglicherweise könnten Sie viele Posts verfolgen, die es aktualisiert hat (oder wenn es überhaupt etwas aktualisiert hat), aber ich konzentriere mich darauf, nur den Code umzugestalten, den wir bereits haben.

Das werden wir also tun. Und als Erstes stellen Sie sicher, dass es tatsächliche Daten gibt, mit denen Sie arbeiten können. Und wenn ja, dann iterieren Sie durch das Listen-Array von Post-IDs und ändern Sie ihren Post-Status:

Sie können sehen, dass es sich nicht wesentlich von der Arbeit unterscheidet, die im ersten Beitrag geleistet wurde, aber es wirft jetzt einige Fragen auf.

3 Objektorientierte Überlegungen

Wenn Sie mit Code wie diesem arbeiten:

  • Gehört alles in dieselbe Klasse oder in getrennte Klassen?
  • Sollte es eine Basisklasse geben und wenn ja, warum oder warum nicht?
  • Sollte es eine einzelne öffentliche Funktion geben, die aufgerufen wird, die diese Methoden aufruft (und sie als privat markiert hat)?
  • Sollten wir die Funktionen öffentlich lassen?

Für diesen Beitrag gehe ich wie folgt vor:

  • Machen Sie jede Funktion als öffentliche Methode verfügbar. Wenn also Daten von der ersten Methode zurückgegeben werden, könnten Sie möglicherweise etwas anderes damit machen.
  • Halten Sie es in einer einzigen Klasse enthalten. Auf diese Weise können wir eine einzelne Klasse instanziieren und sie dann verwenden, um alle erforderlichen Aufgaben zu erledigen. Wenn es andere Methoden gäbe, würden wir dieselben Methoden verwenden.
  • Beginnen Sie mit der Schnittstelle. Ich werde mir nicht die Mühe machen, eine Schnittstelle zu schreiben, um nur eine Schnittstelle zu zeigen (ich nehme an, es ist einfach genug, dies angesichts der Funktionen, die wir gerade haben, abzuleiten), aber ich werde die Klasse nehmen und zeigen, wie wir die aufrufen können funktioniert „von außen nach innen”.

Also werde ich mit dem letzten Punkt beginnen und rückwärts arbeiten. So können Sie mit dem Code arbeiten:

Und dann sieht die ganze Klasse so aus:

Im Allgemeinen dient dies den gleichen Zwecken wie die ersten, jedoch auf eine objektorientiertere Weise.

Das ist nicht der Weg

Da ich versucht habe, diesen Beitrag mehrmals zu wiederholen, ist dies nicht der endgültige Weg, um diese Arbeit zu erledigen. Stattdessen ist es eine Möglichkeit, wie die Arbeit erledigt werden kann.

Sie können dies nach Belieben umgestalten, umfaktorisieren oder wiederverwenden. Der Zweck ist jedoch zu zeigen, wie man Logik, die wir normalerweise als prozedural betrachten, in etwas entkoppeln kann, das etwas weniger von sich selbst abhängig ist und Raum für zusätzliche Arbeit lässt.

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