logo

Palette - Mach es bunt🎨

Palette - Visueller Page Builder. Keine Designkenntnisse nötig.

Live-Demo Palette herunterladen

Scroll

1.3. Unseren PHP-Framework zusammenstellen

26/05/2025, by Ivan

Es gibt viele verschiedene Wege, um ein Framework zu entwickeln. Manche bevorzugen sehr komplexe Frameworks, andere bevorzugen einfache Frameworks. In unseren Artikeln werden wir schnell ein einfach zu verwendendes und einfach zu verstehendes Framework zusammenstellen.

Unsere Artikel helfen Ihnen, Ihren eigenen Framework zu entwickeln, der sich vom Framework unterscheidet, den wir für die Erstellung eines Online-Shops benötigen. Sie können problemlos andere Teile zu dem Framework hinzufügen, um etwas Größeres zu erstellen. Das Hauptziel der Artikelreihe ist es, zu lernen, wie man seinen eigenen Framework für beliebige CMS erstellt.

Muster (Patterns)

 Bei der Entwicklung eines Frameworks werden verschiedene Designmuster der Anwendung angewendet. Ein Muster ist eine besonders erfolgreiche Lösung und Praxis, die allgemeine Probleme löst, die mit der Softwareentwicklung verbunden sind. Unter den Mustern werden wir die folgenden verwenden:

  • Modell-Ansicht-Steuerung (MVC, Model-View-Controller)
  • Registrierung (Registry)
  • Einzelne Klasse (Singleton)

Modell-Ansicht-Steuerung (MVC)

MVC ist die Grundlage unseres Frameworks und bietet uns eine Lösung zur Trennung der Benutzeroberfläche und der Logik unserer Anwendung. Die Benutzeroberfläche (View) interagiert mit Datenmodellen (Model) unter Verwendung von Controllern (Controller), die wiederum die erforderliche Geschäftslogik enthalten, um die Daten in den Modellen zu verwalten.

Zum Beispiel, wenn ein Benutzer auf "In den Warenkorb hinzufĂĽgen" in der Ansicht (View) klickt, verarbeitet der Controller diese Anfrage und interagiert mit dem Warenkorbmodell und fĂĽgt das Produkt in den Warenkorb ein. Normalerweise gibt das Warenkorbmodell die Daten an den Controller zurĂĽck, wie viele Produkte sich derzeit im Warenkorb befinden, und zeigt den neuen Warenkorb mit der neuen Anzahl von Produkten an.

MVC

Wir werden unseren Framework verwenden und werden die Möglichkeiten auf der Grundlage von MVC erweitern. Wie bereits erwähnt, werden die Daten in den Modellen dargestellt, die Daten selbst befinden sich in der Datenbank. Allerdings befinden sich die Modelle und die Tabellen in der Datenbank in demselben Format (die Felder in den Modellen stimmen mit den Feldern in den Tabellen überein). So können wir unser MVC-Diagramm erweitern. Wir sehen auch das Endergebnis, das in der Ansicht verarbeitet und im Browser angezeigt wird, daher werden wir es auch in das Diagramm aufnehmen.

MVC scheme

Registrierung (Registry)

Die Registrierung bietet die Möglichkeit, eine Sammlung von Objekten unseres Frameworks zu speichern. Der Bedarf an einer Registrierung ergibt sich aus der Abstraktion, die mit dem MVC-Muster verbunden ist. Jeder Controller und jedes Modell (z.B. Produkt, Warenkorb, Seite) müssen gemeinsame Aufgaben erfüllen, darunter:

  • Datenbankabfragen
  • ĂśberprĂĽfung, ob sich der Benutzer angemeldet hat, um die benötigten Informationen zu erhalten
  • Senden von Daten an View (Verwaltung von Vorlagen)
  • Senden von E-Mails, z.B. beim Kauf eines Produkts auf der Website
  • Interaktion mit dem Dateisystem, z.B. Hochladen von Fotos fĂĽr Produkte.

Die meisten Systeme und Frameworks führen diese Funktionen in Objekten aus, und wir werden solche Objekte erstellen. Die Registrierung ermöglicht es, diese Objekte zusammen zu speichern. Die Registrierung kann von überall im Framework aufgerufen werden und bietet Zugriff auf ihre Funktionen. Hier ist ein ungefähres Diagramm unserer Registrierung.

MVC

Das Framework interagiert direkt mit der Registrierung, wenn es notwendig ist, und bietet Zugriff auf die anderen Objekte. Innerhalb der Registrierung können Objekte auch miteinander interagieren, z.B. der Template-Manager kann mit dem Dateimanager verknüpft sein, der E-Mail-Absender ist mit den E-Mail-Vorlagen verbunden.

Einzelne Klasse (Singleton)

Es ist schwierig, einen Begriff für Singleton in der deutschen Sprache zu finden, daher werden wir "Einzelne Klasse" verwenden, aber in der Dokumentation wird normalerweise "Singleton" oder einfach das englische Wort "Singleton" verwendet. Es ist möglich, dass es besser ist, das englische Wort zu verwenden (sicherlich, aber wir werden "Einzelne Klasse" verwenden).

Einzelne Klasse - eines der einfachsten Muster zum Verständnis. Sein Hauptzweck besteht darin, zu garantieren, dass nur eine Instanz der Klasse vorhanden ist. Der Grund ist normalerweise folgendes: Es ist nur ein Objekt der ursprünglichen Klasse erforderlich, und Sie müssen sicherstellen, dass das Objekt überall in der Anwendung verfügbar ist, d.h. globaler Zugriff.

Eine einzelne Klasse wird verwendet, wenn eine Klasse nur einen Zweck hat. Zum Beispiel, um die Verbindung zur Datenbank zu konfigurieren, damit andere Objekte mit der Datenbank interagieren können.

Allgemeine Struktur

 Der nächste Schritt bei der Entwicklung unseres Frameworks ist die Planung der Struktur. Wir mĂĽssen eine Struktur fĂĽr Folgendes erstellen:

  • Modelle
  • Ansichten (Damit wir die Möglichkeit integrieren können, die Stile der Website in unserem Framework zu wechseln, so dass es fĂĽr jeden Stil einen separaten Ordner gibt)
  • Controller (Damit wir den Controller in einem separaten Ordner speichern können, wenn wir Funktionalität hinzufĂĽgen möchten, mĂĽssen wir nur einen neuen Ordner mit dem Controller hinzufĂĽgen)
  • Admin-Controller (wir erstellen nicht nur einen Framework, sondern auch CMS, daher mĂĽssen wir vorsehen, dass Moderatoren und Administratoren Informationen auf der Website eingeben können)
  • Registrierung
  • Registrierungsobjekte
  • Hochgeladene Dateien
  • Bibliotheken von Drittanbietern
  • Sonstiger Code

Unter BerĂĽcksichtigung der Struktur des Frameworks sollten die Ordner unseres Frameworks wie folgt aussehen  (wir werden englische Ordnernamen verwenden, da dies in PHP ĂĽblich ist):

  • Models
  • Views
    • View A
    • Templates
    • Images
    • JavaScript
  • Controllers
    • Controller A
      • ControllerA
      • ControllerAAdmin
  • Registry
    • Objects
    • Database objects
  • Assets
  • Uploads
    • To be expanded when we add products and images to our framework!
  • Libraries
  • Miscellaneous