Hallo borisbaer,
ja, die Montage des a Elements ist jetzt besser.
Ich hätte - als urlaubender Späteinsteiger im Thread, aber auch noch ein paar andere Hinweise.
Die Parameter sind nach den Umstellungen irreführend benannt.
- $href ist keine URL, sondern der Unterseitenname und die URL baust Du daraus zusammen. Ich würde $href in $subpageName umbenennen.
- $name ist kein Name, sondern ein HTML-formatierter Name. Ich hatte schon Luft geholt, um das fehlende htmlspecialchars anzumeckern - aber das geht ja nicht weil Du da deine Spezialtypographie einsetzt. Man KÖNNTE (muss nicht) $name in $nameHtml umbenennen, um klarzumachen, dass dieser Wert nicht durch den Kontextwechsel darf.
- $uri ist die Grundlage für die Bestimmung des Subpage-Ordners. Das könnte man auch herausziehen - vermutlich brauchst Du das öfter. Du kannst
$subpages
nur einmal ermitteln und dem Wert an navAnchor übergeben, statt ihn jedesmal neu zu bestimmen. Die Aufgabe "Ermittle den Order der Subpages" gehört meiner Meinung nach nicht in eine Funktion "Erzeuge einen Navigationsanker" - das sind getrennte Aufgaben und damit widerspricht das dem Single Responsibility Principle (SRP).
Dieser Codeteil
if ( !empty( $_GET['subpage'] ) ) {
if ( $href === $_GET['subpage'] )
$current = 'aria-current="page"';
} else {
if ( $href === 'game' )
$current = 'aria-current="page"';
}
hat für mich ebenfalls einen SRP-Smell. Das ist die Ermittlung der angeforderten Subpage, mit Zuweisung eines Defaults falls keine angefordert ist. Abhängig davon wird das aria-current Attribut hinzugefügt. Das sind getrennte Aufgaben. Ich würde eine weitere Funktion schreiben und navAnchor so ändern:
<?php
function getSubpageName()
{
if ( empty ( $_GET['subpage'] ) )
return "game";
return $_GET['subpage'];
}
function navAnchor($anchorSubpageName, $nameHtml, $subpagesFolder)
{
$current = getSubpageName() == $anchorSubpageName
? 'aria-current="page"'
: "";
if ( file_exists( $subpagesFolder . $anchorSubpageName . '.php' ) ): ?>
<a href="<?= $anchorSubpageName ?>" <?= $current ?>><?= $nameHtml ?></a>
<?php endif;
}
Just my 2 cents...
Rolf
--
sumpsi - posui - obstruxi
sumpsi - posui - obstruxi