Zusammenfassung – Organisiertes Projekt
Teil des Abschnitts Objektorientierte Programmierung der PHP-Journey von Coddy — Lektion 14 von 91.
Aufgabe
EinfachLassen Sie uns eine vollständige Blog-Anwendung mit einer ordnungsgemäßen Namespace-Organisation erstellen, die alles zusammenführt, was Sie über Namespaces, das use-Schlüsselwort und PSR-4-Autoloading gelernt haben.
Sie werden ein gut strukturiertes Projekt mit fünf Dateien erstellen, die zeigen, wie echte PHP-Anwendungen ihren Code organisieren:
src/Models/Author.php— Definieren Sie eineAuthor-Klasse im NamespaceBlog\Models. Sie sollte einepublic $name-Eigenschaft haben, einen Konstruktor, der den Namen akzeptiert und setzt, und einegetBio()-Methode, die"Author: " . $this->namezurückgibt.src/Models/Post.php— Definieren Sie einePost-Klasse im NamespaceBlog\Models. Sie sollte die Eigenschaftenpublic $titleundpublic $authorhaben (wobei author einAuthor-Objekt ist). Der Konstruktor akzeptiert einen Titel und einAuthor-Objekt und setzt beide. Fügen Sie einegetSummary()-Methode hinzu, die$this->title . " by " . $this->author->namezurückgibt.src/Services/Publisher.php— Definieren Sie einePublisher-Klasse im NamespaceBlog\Services. Sie sollte einepublish(Post $post)-Methode haben, die einPost-Objekt akzeptiert und"Published: " . $post->titlezurückgibt. Sie müssen diePost-Klasse mit demuse-Schlüsselwort importieren, da sie sich in einem anderen Namespace befindet.vendor/autoload.php— Erstellen Sie einen PSR-4-Autoloader mitspl_autoload_register, der das Namespace-PräfixBlog\dem Verzeichnissrc/zuordnet. Dieser einzelne Autoloader übernimmt das automatische Laden all Ihrer Klassen.index.php— Ihr Einstiegspunkt. Binden Sie den Autoloader ein und verwenden Sie dann dasuse-Schlüsselwort, umBlog\Models\Author,Blog\Models\PostundBlog\Services\Publisherzu importieren. Erstellen Sie einenAuthornamens"Jane Smith", einenPostmit dem Titel"Getting Started with PHP"unter Verwendung dieses Autors und einenPublisher. Geben Sie die Biografie des Autors, die Zusammenfassung des Beitrags und das Ergebnis der Veröffentlichung des Beitrags aus (jeweils in einer eigenen Zeile).
Beachten Sie, wie der Publisher-Service vom Post-Modell abhängt — dies zeigt, wie Klassen in verschiedenen Namespaces zusammenarbeiten können, indem sie das Benötigte mit use-Anweisungen importieren.
Probier es selbst
<?php
// Den Autoloader einbinden
require_once 'vendor/autoload.php';
// TODO: Die notwendigen Klassen mit 'use'-Anweisungen importieren
// - Blog\Models\Author
// - Blog\Models\Post
// - Blog\Services\Publisher
// TODO: Erstelle einen Autor namens "Jane Smith"
// TODO: Erstelle einen Post mit dem Titel "Getting Started with PHP" unter Verwendung dieses Autors
// TODO: Erstelle einen Publisher
// TODO: Gib die Biografie des Autors aus
// TODO: Gib die Zusammenfassung des Posts aus
// TODO: Gib das Ergebnis der Veröffentlichung des Posts aus
?>Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas $this-SchlüsselwortMethodenEigenschaftenKonstruktor (__construct)Destruktor (__destruct)Rückblick - Einfacher Taschenrechner4Vererbung
Grundlagen der VererbungDas parent:: SchlüsselwortMethoden überschreibenDas final SchlüsselwortAbstrakte KlassenZusammenfassung – Mitarbeiter-Hierarchie7Kapselung
Public, Protected, PrivateZugriffsmodifikatoren im DetailGetter und SetterInformation HidingConstructor Promotion (8.0)Zusammenfassung – Studentenverwaltungssystem2Namensräume & Autoloading
Einführung in NamensräumeDas use-SchlüsselwortPSR-4 Autoloading-StandardComposer AutoloaderZusammenfassung – Organisiertes Projekt5Interfaces & Verträge
Einführung in InterfacesInterfaces implementierenMehrfache Interface-ImplementierungInterface vs. Abstrakte KlasseType Hinting mit InterfacesZusammenfassung – Formen-Rechner8Magische Methoden
Einführung in magische Methoden__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Objekt-Klonen__serialize & __unserializeZusammenfassung - Eigene Collection11Typsystem & Fehlerbehandlung
TypdeklarationenNullable-TypenUnion- & Intersection-TypenException-KlassenEigene Exception-HierarchieTry, Catch, FinallyZusammenfassung - Formular-Validator14Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen3Klasseneigenschaften
Instanz- vs. statische EigenschaftenKonstanten in KlassenStatische Methoden & EigenschaftenPrivate & geschützte EigenschaftenReadonly-Eigenschaften (PHP 8.1)Zusammenfassung – Bankkonto-Manager6Polymorphismus
Method Overriding erneut betrachtetPolymorphismus über InterfacesType Hinting & Union TypesLate Static BindingZusammenfassung – Payment Processor9Traits
Einführung in TraitsVerwendung mehrerer TraitsKonfliktlösung bei TraitsAbstrakte Methoden in TraitsTraits vs. Vererbung12Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterObserver-MusterStrategy-Muster15Abschlussherausforderungen
E-Learning-PlattformBanksystemSpielcharakter-EntwicklungFahrzeugvermietung