Advertisement
  1. Code
  2. PHP

Erweitern Sie Ihr PHP mit mehrstufigen Anwendungen

by
Read Time:11 minsLanguages:

German (Deutsch) translation by Federicco Ancie (you can also view the original English article)

Da PHP-Anwendungen immer komplexer werden, kann es leicht zu einem Wirrwarr von Code kommen, der eine Wartung nahezu unmöglich macht. Die Anwendung des Konzepts abgestufter Anwendungen kann dazu beitragen, einige der Schwierigkeiten bei der Verwaltung komplexer Anwendungen zu verringern.


Was meinen Sie mit gestuften Anwendungen?

Tiered Programming ist die Praxis, verschiedene Komponenten, Ideen oder Sprachen voneinander zu trennen.
Bei der Front-End-Entwicklung werden für abgestuftes Markup externe Stylesheets und JavaScript verwendet.

Example of tiered markup using external JavaScript and CSSExample of tiered markup using external JavaScript and CSSExample of tiered markup using external JavaScript and CSS

Durch die Verknüpfung mit einer CSS-Datei, anstatt Stile in Ihr HTML-Markup einzubetten, wird es einfacher, die Formatierung
Ihrer Websites zu ändern, da jetzt alle Stilinformationen bequem an einem Ort gespeichert werden,
der vom Markup des Dokuments getrennt ist. Und mehrere HTML-Seiten können genau dieselbe CSS-Datei abrufen.
Ihre gesamte Site kann stilistisch aktualisiert werden, indem Sie einfach eine Zeile CSS ändern.

In der Back-End-Entwicklung gelten dieselben Regeln, es handelt sich jedoch
um unterschiedliche Komponenten. Im Großen und Ganzen betrachten wir drei Ebenen: die Ebenen Datenbank (Speichern und Abrufen von Daten), Business
(Verarbeiten und Verarbeiten von Daten) und Präsentationsstufen (Anzeigen von Daten).

Warum sollte es mich kümmern?

Make your functions plug and play by using tiered applications.Make your functions plug and play by using tiered applications.Make your functions plug and play by using tiered applications.

Es ist möglicherweise nicht sofort offensichtlich, aber die Aufteilung Ihrer Anwendungen in eine abgestufte Struktur hat enorme
Auswirkungen auf die Fähigkeit Ihres Codes, sich in Zukunft zu ändern. Wenn Sie beispielsweise ein Blogging-System eingerichtet haben und
ein RSS-Feed für das Blog erstellt werden muss, können Sie mit einer ordnungsgemäß abgestuften
Anwendung einfach eine RSS-Vorlage einrichten und dann die von Ihnen bereitgestellten Datenbank- und Geschäftsfunktionen aufrufen habe schon geschrieben.

Wenn Ihr Kunde plötzlich feststellt, dass PostgreSQL eine bessere Wahl für seine Organisation ist
als MySQL, müssen Sie nur Ihre Datenbankfunktionen neu schreiben, ohne die Geschäfts- oder
Präsentationslogik der Anwendung zu berühren.

In Bezug auf die Wiederverwendbarkeit können Sie über mehrere Datenbankfunktionen verfügen (z. B. MySQL, PostgreSQL und
Oracle), die mit nur wenigen Codezeilen an einem Ort problemlos in neue Rollouts Ihrer
Anwendung eingefügt werden können, anstatt mehrere zu bearbeiten Zeilen Ihres Codes über mehrere Funktionen.

Der falsche Weg

Nehmen wir zunächst eine recht einfache Aufgabe: Ziehen Sie den Titel und den Haupttext eines Eintrags aus einer Datenbank,
erstellen Sie eine verkürzte Version des Eintrags und platzieren Sie die Daten in HTML-Markups.
Gehen Sie dabei völlig falsch vor. Im folgenden Code schreiben wir eine Funktion, um alle unsere
Aufgaben auszuführen:

Dieser Code gibt HTML-Markup in dieser Richtung aus:

Obwohl dies logisch erscheinen mag, ist es tatsächlich wirklich unerwünscht. Lassen Sie uns untersuchen,
was diesen Code zu einem nicht optimalen Ansatz macht.

Das Problem mit diesem Ansatz

Lumping functions causes redundant code and difficult maintenance.Lumping functions causes redundant code and difficult maintenance.Lumping functions causes redundant code and difficult maintenance.

Schlechte Lesbarkeit - Dieser Code ist verwässert. Sein Zweck ist schwer zu erkennen, obwohl er in den Kommentaren
dokumentiert ist. Wenn Sie dies geschrieben haben und dann in sechs Monaten darauf zurückgekommen sind,
ist nicht sofort klar, was los ist, was bedeutet, dass einige Sekunden / Minuten damit verschwendet werden, Ihren eigenen Code zu interpretieren.

Zu eng im Fokus - Diese Funktion wird durch ihre Spezifität beeinträchtigt: Die Datenbankabfrage funktioniert nur für einen Eintragstyp.
Die Erstellung der Textvorschau ist in der Funktion fest codiert. Die Formatierung ist spezifisch für die Art des angezeigten Eintrags.
being displayed. In order to create a slightly different implementation of this functionality, we'd be force Um eine etwas andere Implementierung dieser Funktionalität zu erstellen, müssen wir eine zweite
Funktion erzwingen, die fast genau gleich aussieht, selbst wenn wir nur die Anzahl der Wörter in der Textvorschau ändern müssen.

Mangelnde Skalierbarkeit - Dies hängt ziemlich eng mit der Idee zusammen, zu eng fokussiert zu sein. wenn wir mehr Funktionalität hinzufügen wollen (z
als Link oder Bild) wird unsere Funktion größer und schwieriger zu verwalten. Und was ist, wenn wir hinzufügen wollen
Bedingungen, die sich auf die Anzeige eines Eintrags auswirken? Es ist leicht zu erkennen, wie eine solche Programmierung Code ermöglicht
schnell weitläufig und unüberschaubar werden.

Das große Problem: Zusammenfassende Datenbank-, Geschäfts- und Anzeigelogik

Dies ist das umfassende Problem, das alle oben genannten Probleme verursacht.

Indem wir alle drei unserer Logik kombinieren
Typen, haben wir am Ende ein enges, chaotisches, schwer zu verwaltendes, fast unmöglich wiederzuverwendendes Gewirr von Code.

Stellen Sie sich eine Anwendung vor, mit der jeder Anzeigetyp (RSS-Feed, Eintragsvorschau, vollständige Eintragsanzeige usw.) erstellt wurde
Eine Funktion wie die oben beschriebene, bei der Datenbankzugriff, Geschäftslogik und Präsentationslogik zusammen geschrieben sind.
Stellen Sie sich nun vor, dass die Site neun Seiten enthält, die alle über eigene Funktionen zur Anzeige und Vorschau von Einträgen verfügen.

Selbst wenn wir davon ausgehen, dass die Anwendung wirklich einfach ist und es nur zwei Funktionen pro Site-Seite gibt, sind wir es dennoch
Betrachten Sie fast zwanzig Funktionen, die aktualisiert werden müssen, wenn Änderungen erforderlich werden.

Den Code verbessern

Um den obigen Code zu verbessern, werden wir unsere verschiedenen Arten von Logik auf mehrere Funktionen verteilen. Wenn es richtig gemacht wird, wir
sollte mit einer Reihe von hoch wiederverwendbaren, leicht verständlichen Funktionen enden, die sich stapeln lassen, um eine Vielzahl von Aufgaben auszuführen.

Smaller, interchangeable functions allow for easy maintenance.Smaller, interchangeable functions allow for easy maintenance.Smaller, interchangeable functions allow for easy maintenance.

Zunächst planen wir die erforderlichen Funktionen, um eine bessere Vorstellung davon zu bekommen
wie es aufgebaut sein soll:

  1. Rufen Sie die Eintrags- und Titelspalten für eine bestimmte Seite aus der Tabelle "Einträge" in der Datenbank ab
  2. Kürzen Sie den Textkörper des Eintrags auf eine Vorschau mit 25 Wörtern und fügen Sie eine Ellipse hinzu
  3. Fügen Sie die Daten in HTML-Tags ein, um sie im Browser des Benutzers anzuzeigen

Wie Sie sehen können, identifiziert unser Plan eindeutig eine Datenbank-, Geschäfts- und Präsentationsebene. Wir können jetzt
Schreiben Sie Funktionen, um jeden dieser Schritte relativ einfach auszuführen.

Schritt 1 - Die Datenbankebene

Um Informationen aus der Datenbank zu erhalten, schreiben wir eine sehr einfache Funktion. Um eine gute Codierung zu fördern
üben, ich werde die mysqli-Erweiterung verwenden, aber
Ich werde mich nicht darauf konzentrieren, wie es funktioniert. Wenn Sie es noch nicht verwenden, würde ich Sie ermutigen, mysqli oder a zu erkunden
ähnliche Erweiterung (d. h. PDO) zum Schutz Ihrer MySQL-Abfragen
Injektionsangriffe.

Also lasst uns direkt in den Code springen:

Wenn Sie aufschlüsseln, was diese Funktion tut, fordern wir buchstäblich nur an
zwei Spalten (Titel und Eintrag) aus unserer Tabelle (Einträge), in denen dann jeder Eintrag gespeichert wird
in einem mehrdimensionalen assoziativen Array, das der Rückgabewert von ist
Funktion. Wir übergeben einen Parameter, $page, damit wir bestimmen können, welche Seite wir sind
Informationen holen für. Auf diese Weise haben wir jetzt eine Funktion erstellt, die funktioniert
für jede Seite unserer Website (vorausgesetzt, sie haben alle ein Feld "title" und "entry").

Beachten Sie, dass unsere Funktion nichts unternimmt, um mit den Daten umzugehen. es handelt einfach
Als Kurier greifen wir nach den von uns angeforderten Informationen und geben sie an alles weiter
kommt als nächstes. Das ist wichtig, denn wenn es mehr tun würde, wären wir in der
Bereich der Geschäftslogik.

Warum ist es wichtig, die Geschäftslogik von der zu trennen?
Datenbanklogik?

Die kurze Antwort ist, dass es Datenbank erlaubt
Abstraktion, was im Wesentlichen bedeutet, dass die Daten von MySQL migriert werden könnten
in ein anderes Datenbankformat wie PostgreSQL oder Oracle, alles ohne
Ändern der Datenverarbeitungsfunktionen (Business Tier), da die Ausgabe würde
immer noch einfach ein mehrdimensionales assoziatives Array sein, das Einträge mit a enthält
Titel und Eintragsspalte, egal welche Art von Datenbank wir verwenden.

Schritt 2 - Die Business-Ebene

Mit den in unser Array geladenen Daten können wir mit der Verarbeitung der Informationen beginnen
passen zu unseren Zwecken. In diesem Beispiel versuchen wir, eine Eintragsvorschau zu erstellen. Im
Im ersten Beispiel wurde die Länge der Vorschau fest in die Funktion codiert.
was wir entschieden haben, ist eine schlechte Praxis. In dieser Funktion übergeben wir zwei Parameter
zu unserem Code: der zu verarbeitende Text und die Anzahl der Wörter, als die wir anzeigen möchten
unsere Vorschau.

Betrachten wir zunächst die Funktion:

In der obigen Funktion überprüfen wir einfach die Anzahl der Wörter in der angegebenen
Der Eintrag ist dann größer als die Anzahl der Wörter, die wir in unserer Vorschau anzeigen möchten
Fügen Sie der neu erstellten $preview-Variablen nacheinander Wörter hinzu, bis wir unsere treffen
Ziellänge, an diesem Punkt fügen wir eine Ellipse hinzu und geben die $preview zurück.

Genau wie in unserer Datenbankebene halten wir den Code innerhalb der Grenzen von
Geschäftsstufe. Wir erstellen lediglich eine Textvorschau. es gibt kein
Interaktion mit der Datenbank und keine Präsentationselemente wie HTML
Markup.

Schritt 3 - Die Präsentationsstufe

Schließlich müssen wir die Daten anzeigen, die wir abgerufen und verarbeitet haben. Für unser
Zu diesem Zweck werden wir es mit extrem einfachem HTML-Markup anzeigen:

Die Idee hinter diesem Code ist einfach: Laden Sie zuerst die Einträge mit unserem
Datenbankfunktion, durchlaufen Sie dann die Einträge und kürzen Sie den Eintragstext
Verwenden Sie unsere Vorschaufunktion und platzieren Sie dann die Titel- und Eintragsvorschau in
Präsentationsaufschlag.

Um nun das Layout der Eintragsvorschau zu ändern, sind nur noch zwei Zeilen von
HTML muss angepasst werden. Dies ist weit weniger verwirrend als das Original
Funktion, die alle drei Ebenen behandelt.

Schlussgedanken zur abgestuften Programmierung

Ich möchte darauf hinweisen, dass das obige Beispiel sehr einfach ist und nur dazu gedacht ist
demonstrieren das Konzept der abgestuften Programmierung. Die Idee ist, dass durch die Beibehaltung der
verschiedene Arten von Programmierlogik getrennt, können Sie die erheblich erhöhen
Lesbarkeit und Wartbarkeit Ihres Codes.

HINWEIS: Es gibt einen großartigen Artikel auf TheDailyWTF.com über die Verwendung und den Missbrauch von abgestuftem Software-Design und
wunderbarer Kommentar zum
Artikel, der unterschiedliche Meinungen präsentiert. Mehrschichtige Anwendungen sind äußerst nützlich, aber auch einfach zu bedienen
Missverständnisse und Überkomplikationen. Denken Sie also daran, Ihre Software vor dem Erstellen gründlich zu planen, um Ursachen zu vermeiden
mehr Probleme als Sie lösen.

Haben Sie Gedanken zu gestuften Anwendungen? Welche Schritte unternehmen Sie?
Maximale Wartungsfreundlichkeit und zukünftige Änderungen des von Ihnen geschriebenen Codes? Lass uns
weiß in den Kommentaren!

  • Abonnieren Sie den NETTUTS RSS Feed für weitere tägliche Webentwicklungs-Tuts und Artikel.


Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.