2012-04-07 6 views
5

Dies ist Teil des Wordpress-Code und ich verstehe es nicht:Colon Operator in PHP

if  (is_404()   && $template = get_404_template()   ) : 
elseif (is_search()   && $template = get_search_template()  ) : 
elseif (is_tax()   && $template = get_taxonomy_template()  ) : 
elseif (is_front_page()  && $template = get_front_page_template() ) : 
elseif (is_home()   && $template = get_home_template()   ) : 
elseif (is_attachment()  && $template = get_attachment_template() ) : 
    remove_filter('the_content', 'prepend_attachment'); 
elseif (is_single()   && $template = get_single_template()  ) : 
elseif (is_page()   && $template = get_page_template()   ) : 
elseif (is_category()  && $template = get_category_template()  ) : 
elseif (is_tag()   && $template = get_tag_template()   ) : 
elseif (is_author()   && $template = get_author_template()  ) : 
elseif (is_date()   && $template = get_date_template()   ) : 
elseif (is_archive()  && $template = get_archive_template()  ) : 
elseif (is_comments_popup() && $template = get_comments_popup_template()) : 
elseif (is_paged()   && $template = get_paged_template()   ) : 
else : 
    $template = get_index_template(); 
endif; 

Ein Doppelpunkt eine geschweifte Klammer in PHP ersetzen kann. Also, wenn ich die Doppelpunkte ersetzen, bekomme ich diese:

if  (is_404()   && $template = get_404_template()   ) { 
    elseif (is_search()   && $template = get_search_template()  ) { 
     elseif (is_tax()   && $template = get_taxonomy_template()  ) { 
     ... 
     } 
    } 
} 
else 

mir keinen Sinn macht, weil jeder elseif seine Öffnung fehlt, wenn.

+9

Ich starb ein wenig ... –

+2

das ist .... schrecklich. – dmp

+0

Ich denke ich weiß was das OP verwirrt ... –

Antwort

17

Reggie,

Doppelpunkte in if/else-Anweisungen in PHP: Es geht nicht darum zu ersetzen Klammern aber ein Paar von Klammern.

Beispiel:

if ($a) : doThis(); 
elseif ($b) : doThat(); 
else : doTheOther(); 
endif; 

if ($a) { doThis(); } 
elseif ($b) { doThat(); } 
else { doTheOther(); } 

ORwerden würde (da es nur eine Aussage ist und nicht ein Block von Anweisungen)

if ($a) doThis(); 
elseif($b) doThat(); 
else doTheOther(); 

Referenz:Alternative Syntax for Control Structures


Wie für dieses spezielle Stück Code:

if  (is_404()   && $template = get_404_template()   ) : 
elseif (is_search()   && $template = get_search_template()  ) : 
elseif (is_tax()   && $template = get_taxonomy_template()  ) : 

es übersetzt

if  (is_404()   && $template = get_404_template()   ) 
    { /* DO NOTHING */ } 
elseif (is_search()   && $template = get_search_template()  ) 
    { /* DO NOTHING */ } 

Hinweis: Die elseif-Anweisung enthält die anderen elseif-Anweisungen NICHT. (wie elseif ($a) { elseif($b) {} })