2012-04-07 44 views
5

這是WordPress的代碼的一部分,我不理解它:科隆操作者在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; 

冒號可以用PHP代替花括號。所以,如果我代替冒號,我得到這個:

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

是沒有意義的我,因爲每個elseif的丟失,如果它的開放。

+9

我死了一點... – 2012-04-07 12:11:05

+2

這是....可怕的。 – dmp 2012-04-07 12:11:29

+0

我想我知道什麼困惑OP ... – 2012-04-07 12:22:43

回答

17

猛將,

冒號在PHP if/else語句:這不是更換括號 但括號的一對。

例子:

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

將成爲

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

OR(因爲它只是一個聲明,而不是一個語句塊)

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

參考:Alternative Syntax for Control Structures


作爲該特定的代碼:

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

其轉換爲

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

提示:elseif語句不包含其他elseif語句。 (像elseif ($a) { elseif($b) {} }