Regular Expressions 101

Community Patterns

There does not seem to be anything here

Community Library Entry

1

Regular Expression
PCRE2 (PHP >=7.3)

/
gamgamtest leovorlage
/
gm

Description

leos vorlage zu der alten plf

🧩 ProbePLF — PHP OOP (Sessions, Vererbung, Namespaces)

🎯 Ziel Aufbau einer kleinen PHP-Webapp mit Formular und Session-Speicherung, die OOP-Grundlagen (Klasse, Kapselung, Getter/Setter), Vererbung und Namespaces einsetzt.

🧱 Issue 1 — Wesentlich_überwiegend

Aufgabe (Issue 1) Entwickle eine erste Version als Einzeldatei (index.php) mit Session, Formular und einer Klasse.

Session aktivieren: session_start() muss als allererster PHP-Befehl in index.php stehen. Formular (Methode POST) mit genau 4 Eingabefeldern in sinnvollem Kontext (z. B. Produkt, Reise, Tier):

4 unterschiedliche HTML-type (z. B. text, number, date, email o. Ă„.) Sinnvolle Vorgabewerte per value="..."

Klasse Item mit

4 privaten Membervariablen mit unterschiedlichen Datentypen, vollständigen Gettern/Settern, Konstruktor, der ausschließlich die Setter verwendet.

Nach POST: Neues Item-Objekt erzeugen und in ein assoziatives Array in der Session speichern:

Key: z. B. inkrementelle ID oder uniqid()

Mehrere Objekte mĂĽssen speicherbar sein.

Ausgabe: Das Session-Array als HTML-Tabelle anzeigen (1 Spalte pro Membervariable + Key). Buttons/Aktionen:

Speichern (Formular abschicken) Löschen eines Eintrags über einen eingegebenen Key Alle löschen (Session-Array leeren)

âś… Akzeptanzkriterien (Issue 1)

session_start() steht ganz oben und Daten bleiben zwischen Requests erhalten. 4 Formularfelder mit unterschiedlichen type und sinnvollen value-Defaults sind vorhanden.

Item kapselt Daten: private Variablen, vollständige Getter/Setter, Konstruktor nutzt Setter. Speicherung in $_SESSION als assoziatives Array; mehrere Einträge sind möglich. Tabelle zeigt alle gespeicherten Objekte inkl. Key korrekt an. Buttons: Speichern, Löschen nach Key, Alles löschen funktionieren sichtbar.

🧱 Issue 2 — Wesentlich_vollständig

Aufgabe (Issue 2) Erweitere auf Vererbung und erweitere das Datenmodell um zusätzliche Felder.

Item-Membervariablen auf protected ändern. Neue Klasse ItemPlus erstellt, die von Item erbt.

3 zusätzliche private Membervariablen (unterschiedliche Datentypen) inkl. Getter/Setter. Konstruktor ruft parent::__construct(...) auf und verwendet auch hier Setter.

Formular um diese 3 Felder erweitern (inkl. Default-value). Speicherung in der Session nur als Instanzen von ItemPlus (nicht mehr Item). Einfache Eingabevalidierung pro Feld beim Speichern:

Leerwertprüfung, Datentyp-Prüfung (so weit über HTML-type hinaus nötig), einfache Range-Prüfung wo sinnvoll. Alle Fehler einer Eingabe werden gesammelt und gemeinsam angezeigt (kein Abbruch nach dem ersten Fehler).

âś… Akzeptanzkriterien (Issue 2)

Item → protected für geerbte Member; ItemPlus erweitert um 3 private Variablen mit Getter/Setter. Konstruktor von ItemPlus nutzt parent::__construct und Setter-Kaskade. Formular besitzt 7 sinnvolle Felder mit Defaults; Tabelle zeigt alle 7 Werte pro Eintrag. Validierungen laufen durch und zeigen alle betroffenen Fehler verständlich an; bei Fehlern wird nicht gespeichert.

🧱 Issue 3 — PlusPlus Aufgabe (Fortgeschritten)

Aufgabe (Issue 3) Struktur und Lesbarkeit verbessern: Auslagerung der Klassen in Dateien und Verwendung von Namespaces.

Lege Verzeichnisstruktur an (Beispiel):

src/Model/Item.php src/Model/ItemPlus.php

Jede Klasse in eine eigene Datei; Dateiname = Klassenname. Beide Klassen im Namespace App\Model deklarieren. In index.php die Klassendateien via require_once einbinden und mit use App\Model\ItemPlus; arbeiten. Funktionalität gegenüber Issue 2 bleibt unverändert.

âś… Akzeptanzkriterien (Issue 3)

Klassen liegen in separaten Dateien unter src/Model und sind mit namespace App\Model; versehen.

index.php bindet strikt per require_once ein und verwendet use-Importe. Anwendung läuft weiter fehlerfrei; Verhalten entspricht Issue 2.

đź§± Optionale Extra-Challenge (nur wenn Zeit ĂĽbrig ist)

FĂĽge eine kleine statische Validator-Klasse (z. B. App\Util\Validator) hinzu und rufe deren Methoden in der Formularlogik auf. Oder: Richte Composer-PSR-4-Autoloading fĂĽr App\ ein (anstelle von require_once).

đź§Ş Hinweise (nicht verpflichtend, nur Starthilfe)

Session kurz:

<?php session_start(); $_SESSION['items'] = $_SESSION['items'] ?? []; ?>

Key erzeugen: $_POST['id'] ?? uniqid() oder eigener Zähler in der Session.

Tabelle: Keys sichtbar machen, damit gezieltes Löschen möglich ist.

Submitted by anonymous - 21 days ago