2016-05-09 10 views
0

wir fragen, was ist der beste Weg emptynullno result in php zurückzukehren, verwenden wir häufig dieseUnterschied zwischen diesen beiden return-Anweisungen in PHP

function doThis($a){ 
    if($a == 0){ 
     return ''; 
    }else{ 
     // complex mysql 
     return $result; 
} 

eine weitere Möglichkeit, es zu tun

function doThis($a){ 
    if($a == 0){ 
     return null; 
    }else{ 
     // complex mysql 
     return $result; 
} 
ist

jetzt vergleichen wir wie dieses

if(doThis(5)){ 
    // do something 
} 

oder

if(!is_null(doThis(5)){ 
    // do something 
} 

Ich fragte mich, was ist der beste Ansatz dafür?

+0

Verwenden Sie '==' zum Vergleichen nicht '=' hier '$ a = 0' – C2486

+0

Es ist schön, nur einen Rückgabetyp zu haben. Wenn Sie das Ergebnis einer Abfrage zurückgeben und das Ergebnis leer ist, geben Sie ein leeres Array zurück. – zennin

Antwort

0

Es gibt ein Problem in Ihrer Funktion doThis in der Nähe von if($a = 0){.

== wird verwendet, um zu vergleichen.

= wird zur Zuweisung von Werten verwendet.

0

Null bedeutet "nichts". Die Variable wurde nicht initialisiert.

False bedeutet "nicht wahr in einem booleschen Kontext". Wird verwendet, um explizit zu zeigen, dass es sich um logische Probleme handelt.

0 ist ein int. Nichts mit dem Rest oben zu tun, für Mathematik verwendet.

if($a = 0) diese zuweisen der Wert Sie if($a == 0)

+0

was ist 'return '';' – runningmark

0

Sprechen über „die beste Art und Weise“, um zu versuchen brauchen nicht zu vergleichen, ohne Kontext keinen Sinn macht. Generell sollten Sie Code schreiben, um diejenigen zu erreichen:

„leer“ Rückgabewert sollte Sinn Code machen, die verwendet es

Es gibt gemeinsame Fälle, von denen leerer Wert ist für bestimmte nicht-leeren Wert zu wählen.

Zum Beispiel, wenn Sie nach der spezifischen Entität in der Datenbank suchen. Im Erfolgsfall gibt Ihr Code das Objekt zurück, so dass es im Falle einer fehlgeschlagenen Suche offensichtlich keine leere Zeichenfolge sein sollte. Üblicherweise wird in diesem Fall null oder NullObject zurückgegeben.

Wenn Ihr Code im Erfolgsfall mehrere Objekte zurückgibt, sollten Sie im Falle eines Fehlers ein leeres Array/Iterator zurückgeben.

Wenn Ihr Code Zeichenfolgen verwendet, möchten Sie in der Regel zu einem bestimmten Zeitpunkt nicht null zurückgeben.

Der offensichtlichste Fall: Wenn Sie im Erfolgsfall true zurückgeben, sollten Sie im Fehlerfall keine leere Zeichenfolge zurückgeben.

So, verwenden Sie Common-Sense-Regeln und ein bisschen Logik, um herauszufinden, rechten Rückgabewert.

Code sollte lesbar und gültig sein

hängt auch von Kontext: Wenn es einen Unterschied in Ihrem Fall ist, wenn die Funktion null zurückgibt, '' oder false, Sie zusätzliche Kontrollen der Rückgabewert verwenden soll (mind guten Namen mit für Prüfmethode). Wenn es Ihrem Code egal ist, was darin ist, außer es ist ein Objekt, dann wird if($something) ausreichen.

Diese Regeln gelten normalerweise für jede Programmiersprache, nicht nur für PHP.

Verwandte Themen