Objektorientierte Programmierung in WordPress Klassen

Wie im ersten Beitrag dieser Serie beschrieben, nähern wir uns dem Konzept der objektorientierten Programmierung im Kontext von WordPress sehr Anfänger.

Das bedeutet, wenn Sie noch nie von OOP gehört haben, oder wenn Sie neugierig waren, es zu lernen, und Wenn Sie sich für WordPress interessieren und lernen, wie Sie Lösungen entwickeln, dann ist diese Serie genau das Richtige für Sie.

In den nächsten Artikeln behandeln wir alle wichtigen Aspekte der objektorientierten Programmierung. Wenn wir das getan haben, werden wir uns ansehen, wie wir das Erlernte anwenden können, indem wir eine funktionierende Lösung für WordPress entwickeln.

Aber zuerst müssen wir mit den Grundlagen beginnen.

Was sind Klassen??

Wenn Sie 10 verschiedene Entwickler nach ihrer Definition einer Klasse fragen, erhalten Sie wahrscheinlich viele ähnlich Antworten, von denen jedoch nur wenige tatsächlich gleich waren. In der Tat ging das, was ich hörte, am häufigsten als ich jünger war, folgendermaßen aus:

Eine Klasse ist ein Entwurf zum Erstellen eines Objekts.

Theoretisch hört es sich gut an insbesondere Wenn Sie wissen, was ein Objekt ist. Aber das ist das Problem, nicht wahr? Wir versuchen, etwas über objektorientierte Programmierung zu lernen. Es gibt also keine Garantie, dass wir überhaupt wissen, was ein Objekt ist. Wie können wir also verstehen, dass eine Klasse als Blaupause dient?

In gewissem Sinne stellt sich die Frage.

Lassen Sie uns einige Schritte zurückgehen und definieren, was ein Objekt ist, um klarer zu definieren, was eine Klasse ist.

Objekte verstehen

Die Idee des objektorientierten Programmierungsparadigmas ist, dass wir als Programmierer die Informationen, die wir in der realen Welt sehen, mit Konstrukten in einem Code einfacher modellieren können.

In der realen Welt gibt es beispielsweise Objekte, die mit Adjektiven beschrieben werden können, und diese Objekte können Aktionen ausführen. Denken Sie einen Moment über ein Auto nach.

  • Es hat mehrere Adjektive wie Größe und Farbe.
  • Es kann fahren und parken.

Wieder ein einfaches Beispiel, aber es beweist den Punkt, dass alles, was wir in der realen Welt haben, normalerweise auf ein Nomen reduziert werden kann, das durch seine Adjektive und die von ihm ausgeführten Aktionen beschrieben werden kann.

Verallgemeinern wir diese Idee auf Objekte. Lassen Sie uns ein Wort durch ein anderes ersetzen:

  • Ein Nomen ist ein Objekt.
  • Ein Adjektiv ein Attribut (oder eine Eigenschaft).
  • Ein Verb ist eine Methode (oder eine Funktion).

Einfach genug, richtig? Der Kurzschluss ist, dass wir in der Lage sein sollten, die Dinge, die wir in der realen Welt als Objekte innerhalb eines Programmierparadigmas sehen, zu beschreiben. Beachten Sie, dass einige Sprachen Attributeigenschaften und einige Methodenmethoden aufrufen. Es spielt auch keine Rolle - es ist alles das Gleiche. Sie beziehen sich lediglich auf Adjektive über das Objekt bzw. die Aktionen, die es ausführen kann.

Schlechte Beispiele

Als Nächstes die meisten Programmierkurse oder Bücher immer Beginnen Sie mit einem Beispiel, wie Objekte reale Objekte modellieren sollen (ähnlich wie bei dem obigen Auto-Beispiel).. 

Und bis zu einem gewissen Grad ist das wahr. Für jene die haben Nachdem Sie in der Entwicklung gearbeitet haben, sind Sie wahrscheinlich damit vertraut, wie wir Menschen im Kontext unserer Anwendung modellieren können.

Obwohl es wahr ist, dass wir objektorientierte Programmierung verwenden können, um Objekte der realen Welt zu modellieren, habe ich festgestellt, dass es öfter der Fall ist, dass ich eine allgemeinere Form eines Objekts der realen Welt modelliere - wie z Nutzer eher als ein Person - und dass die Aktionen, die sie ausführen, für sie einzigartiger sind.

Zu diesem Zweck werden die Beispiele, die ich in diesem Artikel geben möchte, und die restlichen Serien dieser Serie eher auf praktische Anwendungen in der Computerprogrammierung ausgerichtet sein. Niemand wird ein Auto-Plugin schreiben, und niemand wird ein Tierobjekt erstellen (was Sie auch oft in Einführungskursen sehen und hören)..

Stattdessen werden wir uns mehr auf Objekte konzentrieren, die eher im Bereich der Programmierung zu sehen sind - nicht in der realen Welt. Nicht, weil die objektorientierte Programmierung schwach ist, sondern weil die Art und Weise, wie wir über das Unterrichten gehen, schwach ist.

Gute Beispiele

Dies wirft natürlich die Frage auf, was ein gutes Beispiel darstellt. Das Problem bei der Beantwortung einer solchen Frage ist, dass es sich buchstäblich um eine Vielzahl von Dingen handeln kann. 

Dazu gehören Objekte wie:

  • ein Blogbeitrag,
  • ein Dokument wie ein Lebenslauf,
  • ein Authentifizierungs- oder Authentifizierungssystem,
  • Ein Produkt,
  • einen Passwortgenerator,
  • … und so weiter.

Und Sie sehen: Viele dieser Dinge existieren in der realen Welt nicht wirklich. Zum Beispiel sind Blogbeiträge nicht greifbar. Das sind Dinge, die wir auf unseren Bildschirmen lesen. Bedeutet das aber, dass sie keine Eigenschaften wie Datum, Uhrzeit und Autor haben? Oder bedeutet das, dass es keine Aktionen wie Veröffentlichen und Löschen gibt?

Natürlich nicht.

Während wir in dieser Serie voranschreiten, werden wir über das Objekt in Bezug auf die Dinge sprechen, mit denen wir wahrscheinlich eher arbeiten.

Ich sehe nicht, dass wir ein Tier programmieren - und schon gar nicht in WordPress - zu irgendeiner Zeit in dieser Serie :).

Zurück zu den Grundlagen

Okay, jetzt, wo wir einen kurzen Exkurs unternommen haben Was Objekte sind in der Tat gute und schlechte Beispiele. Es ist an der Zeit, tatsächlich über Klassen zu sprechen und darüber, wie sie wirklich als Bauplan für Objekte dienen.

Bei der Programmierung wird ein Objekt aus einer Klasse erstellt. Das bedeutet, dass eine Klasse alle Eigenschaften definiert, die ein Objekt besitzt, und die möglichen Aktionen, und der Computer erstellt ein Objekt im Speicher.

Wenn es um Klassen geht, hören Sie vielleicht Entwickler, wie sie Klassen schreiben, Klassen definieren oder Klassen erstellen. Alle diese Bedingungen sind akzeptabel.

Danach hören Sie möglicherweise, wie Entwickler über das Erstellen von Objekten sprechen. Das Erstellen eines Objekts wird als Instantiierung bezeichnet. Ja, es ist ein großes Wort für ein relativ einfaches Konzept. Stellen Sie sich das so vor: Wenn Sie über eine Klasse verfügen, haben Sie eine Definition, aus der Sie mehrere Instanzen eines Objekts erstellen können.

Wenn wir eine Analogie zur realen Welt ziehen müssen, denken Sie zuerst über eine Reihe von Bauplänen für ein Haus nach. Es enthält den Grundriss, die Abmessungen, die Wände usw., die den Bauarbeitern Informationen zum Bau eines Hauses geben. Wenn es dann Zeit ist, tatsächlich ein Haus zu bauen, dann baut ein Team von Bauarbeitern das Haus anhand des Bauplans.

Dies ist der Fall bei Klassen, Instantiierung und Objekten. Klassen sind die Blaupausen, der Computer ist das Team der Bauarbeiter und die Objekte sind das Haus. Und so wie mehrere Häuser aus einem einzigen Bauplan errichtet werden können, ist dies bei Objekten und Klassen der Fall.

Die mentalen Modelle von Klassen und Objekten

Wenn es um das Schreiben von Code geht, können manche das Objekt im Kopf sehen - andere vielleicht nicht. 

Ich persönlich denke, dass dies mehr damit zu tun hat, wie jeder von uns Informationen lernt und verarbeitet, aber ich glaube, es ist möglich, sich ein Bild von der Funktionsweise von Softwaresystemen zu machen, je länger Sie Code schreiben.

Hier werden wir kein komplexes System betrachten; jedoch, sind Schauen wir uns ein Beispiel einer Klasse an und dann eine visuelle Darstellung dessen, wie dies in Bezug auf Code und in Bezug auf ein mentales Bild aussehen könnte.

Eine Klasse für einen Blogbeitrag

Da wir uns mit WordPress beschäftigen, könnte ein erstes Beispiel für eine Klasse ein Blogbeitrag sein.

Zugegeben, dies ist ein einfaches Beispiel, um die Ideen von Attributen und Funktionen zu demonstrieren, aber in zukünftigen Artikeln werden wir verschiedene Konstrukte ausführlicher behandeln.

Nehmen wir also an, dass wir eine Klasse für einen Blogbeitrag erstellen werden. Sagen wir auch, dass unser Blog-Post einen Autor haben wird, ein Datum, an dem er veröffentlicht wurde, ob er veröffentlicht wurde oder nicht und die Aktionen, die veröffentlicht und gelöscht werden sollen.

Eine Beispielklassendefinition für einen Blogbeitrag mit diesen Attributen und Funktionen sieht folgendermaßen aus:


Klasse Blog_Post privater $ Autor; privates $ publish_date; private $ is_published; public function publish () // Artikel hier veröffentlichen public function delete () // Artikel hier löschen

Für diejenigen, die mit der objektorientierten Programmierung vertraut sind, erkennen Sie möglicherweise einige der obigen Informationen und auch, dass ich bestimmte Dinge (wie den Konstruktor) ausgelassen habe. Machen Sie sich keine Sorgen - wir werden diese Konzepte später behandeln.

Für diejenigen, die mit der Programmierung völlig neu sind, sieht eine grundlegende Klassendefinition so aus. Sorgen Sie sich vorerst nicht um die Worte Privatgelände und Öffentlichkeit wie wir später behandeln werden.

Konzentriere dich stattdessen auf $ Autor, $ publish_date, und $ is_published. Das sind die Attribute. Beachten Sie, dass sie über den Funktionsdefinitionen in der Klasse liegen. Diese sind analog zu Adjektiven, die das beschreiben Blogeintrag.

Als nächstes haben wir die Funktionen veröffentlichen() und löschen(). Diese beiden Funktionen sind die Aktionen, die ausgeführt werden können auf das Blogeintrag. Denken Sie daran, wie sich Objekte in der realen Welt bewegen können (wie ein Auto fahren kann), ein Blog-Post kann veröffentlicht werden.

Eine visuelle Darstellung

Was passiert also, wenn Sie tatsächlich einen Blog-Beitrag instanziieren? Das heißt, wenn wir einen Blog-Beitrag im Code erstellen, wie können wir uns mental vorstellen, was im Computer passiert.

Lassen Sie uns zunächst erläutern, wie ein Blogbeitrag instanziiert wird. Denken Sie daran, dass instanziiert ein Wort ist, wie es für Bauarbeiter gilt, wie ein Objekt aus einer Klasse erstellt wird.

Als Nächstes wollen wir sehen, wie wir die Definition einer einzelnen Klasse verwenden können, um drei verschiedene Blogbeiträge zu erstellen:

$ first_post = new Blog_Post (); $ second_post = new Blog_Post ();

Leicht zu lesen, richtig? Oben haben wir zwei Variablen erstellt, die zwei völlig unterschiedliche referenzieren Blogeintrag Objekte. 

Beachten Sie, dass wir in einem zukünftigen Artikel, dem Wort, mehr darüber sprechen werden Neu ist das, was den Computer anweist, eine Blogeintrag von uns aus der Klassendefinition.

Schauen wir uns das erste Beispiel an, wo wir unsere erste Instanz bekommen Blogeintrag.

Beachten Sie in dieser Abbildung, wir haben die $ first_post Variable, die sich auf die Instanz von bezieht Blogeintrag das wurde geschaffen. Das Blogeintrag Wenn sich der Arbeitsspeicher des Computers befindet, verfügt er über die verfügbaren Attribute sowie über die verfügbaren Methoden.

Wir können auf alle diese durch die zugreifen $ first_post Variable, die auf dieses Objekt verweist. Wir werden später in der Serie ausführlicher darüber sprechen.

Aber was ist mit dem $ second_post? Wie geht das Das in den Kontext der objektorientierten Programmierung schauen?

Wenn Sie die beiden Abbildungen vergleichen, sehen sie ziemlich gleich aus, richtig? $ first_post verweist auf eine Instanz von Blogeintrag, $ second_post verweist auf eine zweite Instanz von Blogeintrag obwohl sie beide kam aus einer einzigen Klasse.

Beachten Sie das für diejenigen, die technisch scharfsinnig sind ist Es ist für beide Variablen möglich, auf eine einzelne Instanz zu verweisen. Dies ist jedoch nicht Gegenstand dieses Artikels.

Was kommt als nächstes??

An diesem Punkt sollten Sie auf jeden Fall wissen, was eine Klasse ist, welche Rolle sie bei der objektorientierten Programmierung spielt und wie wir Instanzen von Objekten erstellen können, auf die über Variablen zugegriffen werden kann.

Dies zeigt uns immer noch nicht, wie man mit den Klassen interagiert, oder? Wir werden darauf eingehen, aber zuerst müssen wir einige der primitiveren Aspekte der Programmierung wie Strings, Arrays, Schleifen und Bedingungen diskutieren.

Jedes der oben genannten Konstrukte wird uns dabei helfen, unsere Objekte zum Leben zu erwecken, und sobald wir uns einmal mit jedem dieser Objekte befasst haben, werden wir zurückkommen, um reifere Klassen zu machen, die wirklich funktionieren können.