PHP pro tip: Yoda Conditions

Marcus Olsson,

I vanliga fall när man jämför en variabel mot t.ex. en sträng, så skriver man på detta sätt i PHP:

1if($foo == 'bar') {
2 // do something
3}
1if($foo == 'bar') {
2 // do something
3}

Men det finns även något som kallas "Yoda conditions" ("Judge me by size, do you?"):

1if('bar' == $foo) {
2 // do something
3}
1if('bar' == $foo) {
2 // do something
3}

Varför är detta något att ha då? Jo, i vanliga fall när man programmerar så är det lätt hänt att man missar ett likamedtecken:

1if($foo = 'bar') {
2 // do something
3}
1if($foo = 'bar') {
2 // do something
3}

Vilket i PHP betyder att $foo får värdet bar – vilket innebär att koden i if-satsen alltid kommer att exekveras. Om man håller sig till "Yoda conditions" så får man istället ett "Syntax error". Vilket kan spara oerhört mycket tid vid ett felskrivande.

När man använder sig av olika ramverk så har de ofta sin egna kodstandard – väldigt få verkar dock ha anammat "Yoda conditions". Men t.ex. Wordpress har nu detta sätt att skriva som kodstandard.