2010-05-07 19 views
10

Bir süredir ama bugün için PHP çalışıyoruz eskisi kadar yeni geldi: Benim için sürprizGarip PHP sözdizimi

if(preg_match('/foo.*bar/','foo is a bar')): 
     echo 'success '; 
     echo 'foo comes before bar'; 

endif; 

o da hatasız çalışır. Beni aydınlatabilecek kimse var mı? herkese

Teşekkür :)

+5

aşağıdaki yanıtların, bu alternatif bir sözdizimi olduğunu söylemiştir. Ayrıca IMO okumak için çok acı verici, lütfen kendi kodunuzda bunu önlemek. – nickf

+3

Bu tür sözdizimi, sık sık 'u açıp kapattığınızda şablonlarda kullanılır ve arada html kullanırsınız. Bu durumlarda bile korkunç ve okunamaz, ve tamamen kaçınılmalıdır. –

+1

@ Lo'oris, ben size katılmıyorum.Bunu bana sorarsanız, şablonlarınızda kullanmak okunabilirliği artırabilir: bir örnek için http://stackoverflow.com/questions/2788891/strange-php-syntax/2789008#2789008 adresine bakın. –

cevap

14

Sözdizimi stili, özellikle şablon/görüntü mantığı için HTML'ye gömülürken daha sık kullanılır. Bu şekilde gömüldüğünde, kaşlı ayraçlar sözdiziminden okumak biraz daha kolay.

<div> 
<? if ($condition): ?> 
    <ul> 
    <? foreach($foo as $bar): ?> 
     <li><?= $bar ?></li> 
    <? endforeach ?> 
    </ul> 
<? endif ?> 
</div> 

Karşı: hala çoğunlukla kişisel tercih olsa

<div> 
<? if ($condition) { ?> 
    <ul> 
    <? foreach($foo as $bar) { ?> 
     <li><?= $bar ?></li> 
    <? } ?> 
    </ul> 
<? } ?> 

ayrıntılı bitiş etiketleri, biraz daha kolay iç içe kod blokları takip etmek olun.

28

Bu PHP en Alternative syntax for control structures olduğunu. Genelde

if(preg_match('/foo.*bar/','foo is a bar')) { 
     echo 'success '; 
     echo 'foo comes before bar'; 
} 

:

if(cond): 
... 
... 
endif; 

için aynı

olarak
if(cond) { 
... 
... 
} 
+1

Sana inanıyorum ama neden Şeytan'ın iyi isminde bunu yapmak isterdin? – BIBD

+2

@CodeSlave: Ben html kodu katıyorsanız daha güzel görünüyor varsayalım. – Daniel

1

PHP el kitabında Alternative syntax for control structures numaralı telefondan okuyabilirsiniz. Reformasyon, Yayınladığınız kod şuna benzer: Bu sözdizimi yanı sıra diğer birçok kontrol yapıları için kullanılabilir

if (preg_match('/foo.*bar/','foo is a bar')) { 
    echo 'success '; 
    echo 'foo comes before bar'; 
} 

:

if (preg_match('/foo.*bar/','foo is a bar')): 
    echo 'success '; 
    echo 'foo comes before bar'; 
endif; 

Bu kod eşdeğerdir. Standart olmayan koşullu sözdizimi destek bilgelik açıkça sorgulanabilir

if(preg_match('/foo.*bar/','foo is a bar')){ 
    echo 'success '; 
    echo 'foo comes before bar'; 
} 

: eşdeğerdir

if(preg_match('/foo.*bar/','foo is a bar')): 
echo 'success '; 
echo 'foo comes before bar'; 
endif; 

:

if (condition): 
    // your if code 
elseif (other_condition): 
    // optional elseif code 
else: 
    // optional else code 
endif; 

while (condition): 
    // your while code 
endwhile; 

for (condition): 
    // your for code 
endfor; 

foreach (condition): 
    // your foreach code 
endforeach; 

switch (condition): 
    // your switch code 
endswitch; 
0

Bu eşdeğerdir.

+0

Bu sözdizimi şablonlarda çok yararlı olabilir, bu nedenle ihmo sorgulanabilir değildir. Ya da en azından belli değil;) –