2010-03-11 8 views
4

Je regardais un site WordPress, et repéré cette ligneQue fait ce simple code php?

<?php if (function_exists('dynamic_sidebar') && dynamic_sidebar(1)) : else : ?> 
    <li id="recent-posts"> 
     <ul> 
      <?php get_archives('postbypost', 5); ?> 
     <ul> 
    </li> 
<?php endif; ?> 

Qu'est-ce que le côlon avant et après d'autre faire exactement? Comment fonctionne cette chose?

Répondre

10

Cette fonction n'exécutera que dynamic_sidebar si elle a déjà été déclarée. Les deux-points sont alternate syntax for control structures de PHP. Ils sont destinés à être utilisés dans des modèles/vues.

Dans ce cas, il semble que le if a un corps vide et il n'est utilisé pour appeler dyanamic_sidebar si elle existe, puisque l'appel à dynamic_sidebar(1) ne se produira pas si le premier ne contrôle booléen.

else affichera n'importe quoi entre lui-même et le <?php endif; ?>. Dans ce cas, il se déclenche lorsque la fonction dynamic_sidebar n'existe pas ou si dyanmic_sidebar(1) ne renvoie pas true.

+0

À droite. J'ai mis à jour le code. – detj

4

Il s'agit d'un alternative Syntax for control structure.

Cela signifie:

<?php 
    if (function_exists('dynamic_sidebar') && dynamic_sidebar(1)) { 
    } else { 
?> 
    <li id="recent-posts"> 
     <ul> 
     <?php get_archives('postbypost', 5); ?> 
     <ul> 
    </li> 
<?php 
    } 
    ?> 
1

La fonction dynamic_sidebar dans Wordpress, lorsqu'il est appelé, affichera la barre latérale avec l'identifiant du nombre qui est passé dans (dans ce cas, il est l'un). L'extrait de code affichera cette barre latérale (si elle existe et la fonction dynamic_sidebar est définie), sinon elle affichera tout ce qui se trouve sous le code que vous avez affiché jusqu'à la ligne à la place de la barre latérale.