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

Beitrag lesen

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.

Danke für den Hinweis!

  • $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.

Ist ein HTML-formatierter Name nicht dennoch ein Name? Was meinst du mit Kontextwechsel?

  • $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).

Das ist ein guter Tipp, danke! Ich wusste auch bisher nichts von diesem SRP, aber ergibt Sinn.

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;
} 

Wird gemacht! 👌

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