Hallo,
Das schreit doch nach einer globalen Definition.
wenn man schon globale Variablen verwenden möchte, finde ich das explizite Bekanntmachen innerhalb der Funktion mit dem global-Keyword sauberer
Abe es ist immer noch der Unterschied zwischen Ölschmier an den Fingern und triefendem Schmodder. $_GLOBALS sollte man einfach ignorieren. Und globale Variablen dringend vermeiden.
Ich muss aber auch eingestehen, dass es in PHP ohne radikale Objektorientierung mühsam ist, auf globale Variablen zu verzichten.
$current === null || $current === 'game' ? 'current' : ''
Hier würde ich definitiv dazu raten, $current bei der Initialisierung gleich auf 'game' zu setzen, wenn nichts drinsteht. Die Funktionen für die Menüpunkte werden von irgendwas aufgerufen. Dieses irgendwas sollte selbst eine Funktion sein (build_menu oder ähnlich), und in build_menu sollte sowas stehen wie
   $current = $_GET['subpage'] ?? 'game';  // <-- NULL gar nicht erst entstehen lassen!
   $menus = [ 'game', 'releases', 'merchandise', ...., 'savegame' ];
   if (!in_array($current, $menus))
      $current = 'game';
   for ($menus as $menu) {
      ("menu_$menu)($current == $menu);
   }
   ...
   function menu_game($isCurrent)
   {
?>
     <a <?= $isCurrent ? 'aria-current="page"' : '' ?> href='...'>Game</a>
<?php
   }
Der Funktionsaufruf mit ("menu_$menu)() funktioniert ab PHP 7.
- Name der Funktion ist vom externen Namen entkoppelt. Wenn auch nur leicht. Noch besser wäre eine echte Map.
 - Subpage wird geprüft, ob es ein gültiger Name ist
 - Prüfung, ob der Menüpunkt die aktuelle Seite ist, ist zentralisiert und aus den Menüfunktionen entfernt
 
Mit der Map meine ich:
   $menus = [ 'game' => 'menu_game',
              'releases' => 'menu_releases',
              'merchandise' => 'menu_mechandise',
              ....,
              'savegame' => 'menu_savegame' 
            ];
   if (!array_key_exists($current, $menus))
      $current = 'game';
   for ($menus as $menuId => $menuHandler) {
      $menuHandler($current == $menuId);
   }
Je länger man über etwas nachdenkt, desto mehr Abstraktionen fallen einem ein...
Rolf
sumpsi - posui - obstruxi