einfachePfade(); $this->platzhalter(); $this->keineTeiltreffer(); } private function einfachePfade(): void { $this->assertEquals([], Router::passt('/', '/'), 'Wurzelpfad passt'); $this->assertEquals([], Router::passt('/einstellungen', '/einstellungen'), 'Fester Pfad passt'); $this->assertNull(Router::passt('/einstellungen', '/konten'), 'Anderer Pfad passt nicht'); } private function platzhalter(): void { $treffer = Router::passt('/konten/{id}', '/konten/42'); $this->assertEquals('42', $treffer['id'] ?? null, 'Platzhalter liefert den Wert'); $treffer = Router::passt('/konten/{id}/buchungen/{buchung}', '/konten/7/buchungen/199'); $this->assertEquals('7', $treffer['id'] ?? null, 'Erster Platzhalter stimmt'); $this->assertEquals('199', $treffer['buchung'] ?? null, 'Zweiter Platzhalter stimmt'); } private function keineTeiltreffer(): void { // Der Platzhalter darf keinen Schrägstrich verschlucken – sonst würde // /konten/{id} auch /konten/1/bearbeiten abfangen. $this->assertNull( Router::passt('/konten/{id}', '/konten/1/bearbeiten'), 'Platzhalter greift nicht über Pfadgrenzen hinweg' ); $this->assertNull(Router::passt('/konten', '/konten/1'), 'Fester Pfad matcht keinen Unterpfad'); $this->assertNull(Router::passt('/konten', '/xkonten'), 'Kein Treffer bei Präfix davor'); } }