2012-06-24 37 views
5

Olası Çoğalt: PHP kodu bir sürü CONST == DEĞİŞKEN gibi koşullu ifadeler kullandığını fark etmiş
php false place in conditionSipariş

. Ben her zaman tersine eklemlenmiş sözdizimi ile büyüdüm. Bu yapının bir sebebi var mı?

Örnek:

// this is the way I see it most typically represented in PHP 
if (false == $foobar) { // do this } 

// this is the way I normally do it 
if ($foobar == false) { // do this } 
+2

Genellikle "Yoda durumu" denir. Bazı insanlar, ödev yazımlarını eşitlik yerine önlemek için kullanırlar. Benim düşüncem, onlara karşı korunmak için tek bir kodlama kuralı yerine yazım hataları getirmemek. –

+0

daha iyisi: if (! $ Foobar) {// bunu yapın} –

+0

fakat ikisi de aynı sonucu veriyor –

cevap

8

Bu, yoda koşulu olarak bilinen == ve = arasındaki ortak bir yazım hatası önlemek içindir. Aşağıdaki düşünün:

if(false = $foobar) { 

Bu false şey atanamıyor çünkü, bir hata düşünülebilir ne alıcı, bir hata ile sonuçlanır. Tam tersi:

Bu geçerli sözdizimi ve yapmak oldukça kolay bir hatadır. Bununla birlikte, birim testlerin bu programatik hataları yakalayabilmesi için if($foobar == false) sözdizimini tercih ederim.

+0

Neden birisi basitçe '$ foobar == false' değerini açık bir şekilde test etmek ister? $ foobar' yetmiş olmalıydı.) Tabii ki, $ foobar === false' tamamen başka bir hikaye.) – raina77ow

+0

@ raina77ow PHP'de ve diğer dinamik olarak yazılan dillerde, boolean 'FALSE'," yanlışlıktan "ayrı bir şeydir. $ Var = "" '; '! $ var' doğrudur, ancak bazen bunun aslında 'FALSE' olduğunu doğrulamanız gerekir. –

+0

PHP ile, hem "0" hem de "false" i döndüren işlevler için yardımcı olur, ör. 'Strpos() '. Yani, $ foobar = strpos ($ haystack, $ iğne); '0 'için geçerli bir dönüş değeri, ya da hatada' false 'olabilir. – nickb