temizleyici kodu php

4 Cevap
if (isset($_GET['sort_by']) && strlen($_GET['sort_by']) > 0)
{
    $sort_by = $_GET['sort_by'];
}
else
{
     $sort_by = 'desc';  
}

nasıl bu yüzden temiz görünüyor ve daha az çizgiler vardır ki yazabiliriz .. Ben bir gömlekleri hehe seviyorum

4 Cevap

The first option is just to move the default value outside the if block and thereby remove the else. If you want to keep the conditions in the if statement this (probably) the best as it retains the clarity that is lost if you more it into a statment using the conditional (ternary) operator.

$sort_by = 'desc'
if (isset($_GET['sort_by']) && strlen($_GET['sort_by']) > 0){
    $sort_by = $_GET['sort_by'];
}

Olarak strlen az 0 dönmeyecek rağmen, kaldırabilirsiniz > 0

$sort_by = 'desc'
if (isset($_GET['sort_by']) && strlen($_GET['sort_by']) ){
    $sort_by = $_GET['sort_by'];
}

Başka bir seçenek, bir çizgi üzerine her şeyi taşımak ve koşullu operatörü kullanmaktır. Dezavantajı bu kadar uzak (benim seçeneğinde) terseness alır ve çok fazla bire bir çizgi koymak başlar olmasıdır.

$sort_by =  isset($_GET['sort_by']) && strlen($_GET['sort_by']) ? $_GET['sort_by'] : 'desc';

Eğer empty() koşullu operatör nedeniyle azaltılmış uzunluğu kullanılabilir hale kullanabilirsiniz böylece biraz işlevsellik değişti eğer. Sorunu "0" dize boş olarak kabul edilir olmasıdır.

$sort_by =  !empty($_GET['sort_by']) ? $_GET['sort_by'] : 'desc';
$sort_by = in_array( $_GET['sort_by'], array( 'asc', 'desc' ) ) ? $_GET['sort_by'] : 'desc';

bu da kontrol vailidity

Sık sık bunu yaparsanız ne olursa olsun bunu yeniden nasıl (ve Yacoby senin için iyi bir-liner var), (null ve strlen onay sorgu dizesi vars), muhtemelen bir seçenek "varsayılan değer" parametresi ile bir fonksiyon içine gerekir .)

yani. function getQueryStringVar($key, $defaultValue = '') { ...

Ben ancak Yacoby kodu temizlerken büyük bir iş yaptı, tek gömlekleri otomatik temizleyici kodu anlamına gelmez eklemek (yanı sıra, bir tek kılıf yapmak) düşündüm. Ancak ben okumak için onun bir liner toparlamak istiyorum ....

$ Sort_by = ($ _GET ['sort_by']) boş? 'Desc': $ _GET ['sort_by'];

Sadece çünkü! sembol bazen kodunu okuyarak birisi tarafından kaçırılmış olabilir - Bu benim görüşüme göre daha net bir astar olduğunu düşünüyorum :)