Ankündigung

Einklappen
Keine Ankündigung bisher.

Etwas falsch, verstehe nicht was genau

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Etwas falsch, verstehe nicht was genau

    Hallo!

    Ich habe so eine Funktion:

    PHP-Code:
    function as_print_social($theme_location = 'header'){ 
        function head_or_foot(){ echo ($theme_location == 'footer') ? 'footer' : 'header' ; } 
        ?> 
        <div id="social_<?php head_or_foot() ?>">
                <span>IHR SCHNELLER<br />KONTAKT ZU UNS:</span>
                <img src="<?php echo get_bloginfo('template_url');?>/images/social_<?php head_or_foot(); ?>.png" alt="Social links" usemap="social_<?php head_or_foot(); ?>" />
                <map name="social_<?php head_or_foot(); ?>">
                    <area alt="Email" href="#" shape="rect" coords="0,0,30,30" />
                    <area alt="Handy" href="#" shape="rect" coords="37,0,67,30" />
                    <area alt="Facebook" href="#" shape="rect" coords="74,0,104,30" />
                    <area alt="Odnoklssniki" href="#" shape="rect" coords="111,0,141,30" />
                    <area alt="Vkontakte" href="#" shape="rect" coords="148,0,178,30" />
                </map> 
        </div>
        <?php
    }
    Wenn ich rufe die Funktion mit 'header' als parameter, dann funktioniert sie richtig. Wenn aber mache ich dasselbe mit 'footer' als parameter, dann habe ich pech – etwas geht schief und ich sehe nicht was genau. Ich weiß nur, dass das genau dann passiert, wenn PHP-Interpreter die "nested" Funktiondefinition head_or_foot() durcharbeitet (vor der Definition funktioniert alles, nachdem nichts. Und das nur wenn $theme_location == 'footer' ).

    Vielen dank im Vorab
    Roman


  • #2
    Du hast eine Funktion in einer Funktion. Mach Dir bitte klar, wie weit Variablenscopes reichen. Und schalte das Error reporting richtig ein.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Danke! Das hat geholfen. Ich habe eine Closure aus der Funktion gemacht:

      PHP-Code:
      $head_or_foot = function () use ($theme_location) { 
                  echo (
      $theme_location == 'footer') ? 'footer' 'header' 
          }; 

      $head_or_foot(); 

      Kommentar


      • #4
        Kann man das nicht auch einfacher haben?

        PHP-Code:
        <?php
        $classPostfix 
        $theme_location == 'footer' 'footer' 'header';
        ?>
        <div class="some_prefix_<?= $classPostfix ?>" ...>...</div>
        Standards - Best Practices - AwesomePHP - Guideline für WebApps

        Kommentar

        Lädt...
        X