Community Patterns

1

gamgamtest_matei_überwiegend_version2

Created·2025-11-21 07:37
Flavor·PCRE2 (PHP)
Tier Verwalter setName($name); $this->setAlter($alter); $this->setGewicht($gewicht); $this->setGeburtsdatum($geburtsdatum); $this->setArt($art); $this->id = uniqid(); } // Getter und Setter für name public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } // Getter und Setter für alter public function setAlter($alter) { $this->alter = $alter; } public function getAlter() { return $this->alter; } // Getter und Setter für gewicht public function setGewicht($gewicht) { $this->gewicht = $gewicht; } public function getGewicht() { return $this->gewicht; } // Getter und Setter für geburtsdatum public function setGeburtsdatum($geburtsdatum) { $this->geburtsdatum = $geburtsdatum; } public function getGeburtsdatum() { return $this->geburtsdatum; } // Getter und Setter für art public function setArt($art) { $this->art = $art; } public function getArt() { return $this->art; } public function getId() { return $this->id; } } if (isset($_POST'speichern'])) { $neuesTier = new Tier( $_POST['name'], $_POST['alter'], $_POST['gewicht'], $_POST['geburtsdatum'], $_POST['art'] ); if (!isset($_SESSION['tiere'])) { $_SESSION['tiere'] = array(); } $_SESSION['tiere'] = $neuesTier; } if (isset($_POST['loeschen'])) { if (isset($_SESSION['tiere'])) { unset($_SESSION['tiere']); $_SESSION['tiere'] = array(); } } ?> Neues Tier hinzufügen Name: Alter: Gewicht (kg): Geburtsdatum: Art: Speichern Alle löschen Gespeicherte Tiere: 0) { foreach ($_SESSION['tiere'] as $tier) { echo "Tier: " . htmlspecialchars($tier->getName()) . ""; } } else { echo "Keine Tiere gespeichert."; } ?>
Submitted by anonymous
1

gamgamtest leo vorlage

Created·2025-11-20 07:31
Flavor·PCRE2 (PHP)
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: 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

Community Library Entry

1

Regular Expression
Created·2015-10-26 23:54
Flavor·PCRE (Legacy)

/
^.*(\d{10})$
/
g
Open regex in editor

Description

jira.rubiconproject.com/browse/DP-1204-Date different issue

Submitted by anonymous