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.
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    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>

        Kommentar

        Lädt...
        X