Menu
Coddy logo textTech

Rückblick – Organisiertes Projekt

Teil des Abschnitts Objektorientierte Programmierung der PHP-Journey von Coddy. Lektion 14 von 91.

challenge icon

Aufgabe

Einfach

Erstellen wir eine vollständige Blog-Anwendung mit einer geeigneten Namespace-Organisation und führen dabei alles zusammen, was du über Namespaces, das Schlüsselwort use und das PSR-4-Autoloading gelernt hast.

Du erstellst ein gut strukturiertes Projekt mit fünf Dateien, die zeigen, wie reale PHP-Anwendungen ihren Code organisieren:

  • src/Models/Author.php: Definiere eine Author-Klasse im Namespace Blog\Models. Sie sollte eine Eigenschaft public $name, einen Konstruktor, der den Namen entgegennimmt und setzt, sowie eine Methode getBio() besitzen, die "Author: [name]" zurückgibt.
  • src/Models/Post.php: Definiere eine Post-Klasse im Namespace Blog\Models. Sie sollte die Eigenschaften public $title und public $author besitzen, wobei author ein Author-Objekt ist. Der Konstruktor nimmt einen Titel und ein Author-Objekt entgegen und setzt beide. Füge eine Methode getSummary() hinzu, die "[title] by [author name]" zurückgibt.
  • src/Services/Publisher.php: Definiere eine Publisher-Klasse im Namespace Blog\Services. Sie sollte eine Methode publish(Post $post) besitzen, die ein Post-Objekt entgegennimmt und "Published: [post title]" zurückgibt. Du musst die Post-Klasse mit dem Schlüsselwort use importieren, da sie sich in einem anderen Namespace befindet.
  • vendor/autoload.php: Erstelle einen PSR-4-Autoloader mit spl_autoload_register, der das Namespace-Präfix Blog\ dem Verzeichnis src/ zuordnet. Dieser einzelne Autoloader übernimmt automatisch das Laden all deiner Klassen.
  • index.php: Dein Einstiegspunkt. Binde zuerst den Autoloader ein und verwende dann das Schlüsselwort use, um Blog\Models\Author, Blog\Models\Post und Blog\Services\Publisher zu importieren. Erstelle einen Author namens "Jane Smith", einen Post mit dem Titel "Getting Started with PHP" unter Verwendung dieses Autors sowie einen Publisher. Gib die Biografie des Autors, die Zusammenfassung des Beitrags und das Ergebnis der Veröffentlichung des Beitrags aus (jeweils in einer eigenen Zeile).

Beachte, wie der Publisher-Dienst vom Post-Modell abhängt. Dies zeigt, wie Klassen in unterschiedlichen Namespaces zusammenarbeiten können, indem sie mit use-Anweisungen importieren, was sie benötigen.

Probier es selbst

<?php
// Den Autoloader einbinden
require_once 'vendor/autoload.php';

// TODO: Importiere die notwendigen Klassen mit 'use'-Anweisungen
// - Blog\Models\Author
// - Blog\Models\Post
// - Blog\Services\Publisher

// TODO: Erstelle einen Author namens "Jane Smith"

// TODO: Create a Post with title "Getting Started with PHP" using that author

// TODO: Erstelle einen Publisher

// TODO: Gib die Bio des Authors aus

// TODO: Gib die Zusammenfassung des Posts aus

// TODO: Gib das Ergebnis der Veröffentlichung des Posts aus
?>

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-PHP-Compiler