Rolf B: PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss?

Beitrag lesen

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
0 60

PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss?

borisbaer
  • php
  1. 0
    Rolf B
    1. 0
      borisbaer
      1. 1
        Raketenwilli
        • php
        • programmiertechnik
        • programmplanung
        1. 0
          borisbaer
          1. 0
            Raketenwilli
            1. 0
              borisbaer
              1. 0
                Raketenwilli
                1. 0
                  borisbaer
                  1. 0
                    borisbaer
                    1. 0
                      Raketenwilli
                      1. 0
                        borisbaer
                        1. 1

                          PHP-Syntax: Anführungszeichen

                          Gunnar Bittersmann
                          • php
                          1. 0
                            Der Martin
                            • programmierstil
                            • syntax
                            1. 1
                              Raketenwilli
                              1. 0
                                Der Martin
                              2. 0

                                Mein höchstpersönlicher Monk bricht aus mir heraus

                                Auge
                                • menschelei
                                • programmierstil
                                • syntax
                                1. 0
                                  Gunnar Bittersmann
                                  • menschelei
                                  1. 0
                                    Auge
                                2. 0
                                  Raketenwilli
                              3. 0
                                borisbaer
                            2. 0
                              Gunnar Bittersmann
                          2. 0
                            borisbaer
                        2. 0
                          Tabellenkalk
                          1. 0
                            Raketenwilli
                          2. 1
                            Gunnar Bittersmann
                            • php
                            • programmierstil
                            1. 0
                              Tabellenkalk
                              1. 0
                                Gunnar Bittersmann
                            2. 0
                              borisbaer
                              1. 0

                                Sollte, hyperliquide Prüfung

                                Raketenwilli
                                1. 0
                                  Raketenwilli
                                  1. 0
                                    Rolf B
                                    1. 1
                                      Raketenwilli
                                2. 0
                                  borisbaer
                                  1. 0
                                    Raketenwilli
                                    1. 0
                                      Rolf B
                                      1. 0
                                        Raketenwilli
                                        1. 0
                                          Rolf B
                                        2. 0
                                          Der Martin
                                          • dateisystem
                                          • meinung
                                          1. 0
                                            Gunnar Bittersmann
                                            • cms
                                            • dateisystem
                                      2. 0
                                        borisbaer
                              2. 1
                                Rolf B
                                1. 0
                                  borisbaer
                                  1. 0
                                    Rolf B
                                    1. 0
                                      Tabellenkalk
                                    2. 0
                                      Der Martin
                                      • menschelei
                        3. 1
                          Rolf B
                          1. 0
                            Der Martin
    2. 0
      Der Martin
      1. 0
        borisbaer
        1. 0
          Der Martin
          1. 0
            borisbaer
            1. 0
              Der Martin
              1. 0
                Rolf B
        2. 1
          Gunnar Bittersmann
          • aria
          • php
          1. 1
            Gunnar Bittersmann
            • php
            • sicherheit
          2. 0
            borisbaer
            1. 0
              Gunnar Bittersmann
  2. 0
    Rolf B
    1. 0
      Gunnar Bittersmann
      • barrierefreiheit