2012-10-17 10 views
7

In PHP, qual è una ragione sottostante per posizionare booleano o null prima di un operatore di confronto identico?Qual è un motivo per posizionare booleano o null prima di un operatore di confronto?

false === $value; 
null === $value; 

Mi sembra che è come dire

$value === false; 

E 'solo una preferenza personale o c'è un motivo concreto per cui le persone fanno questo?

+0

possibile duplicato di [Riferimento -? Che cosa significa questo simbolo significa in PHP] (http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – rekire

+1

Egli isn Chiedendo cosa fa un qualche operatore, sta chiedendo perché si farebbero confronti con Yoda. – Gromer

risposta

12

È una convenzione per evitare l'errore di assegnare accidentalmente una variabile.

$value = false; 

invece di

$value === false; 
+1

+1, è importante sapere il motivo! Se per errore scrivi 'false = $ value' riceverai un errore o un avvertimento, diversamente da' $ value = false' che ti farà assegnare accidentalmente una variabile. (Come scritto @nalply) –

+0

@OfirBaruch: ottengo questo argomento , Lo so davvero ... ma lo trovo ancora meno convincente. La maggior parte delle persone scrive le proprie condizioni al contrario. Quando si adotta questo stile, potreste ritrovarvi a inseguire bug causati da "if ($ false === $ value") che è facile da trascurare. Inoltre, quando si lavora in una squadra, questo è il tipo di codice che molti cambieranno, per adattarsi alle loro abitudini ... a volte "git blame" è un po 'inutile. +1 per questa risposta, però: è un buon punto –

+0

È solo una convenzione. Lo uso raramente. Mi sembra imbarazzante. Per me ha più senso in casi speciali come in 'if (false === ($ file = fopen (" example.txt "," r "))) die (" FAIL ");' o così. – nalply

4

Questo è a volte indicato come Yoda-condizioni, c'è un divertente list of all such constructs ei loro nomi non ufficiali.

No non c'è alcuna reale differenza tra $var === false o false === $var, alcune persone sostengono che è più facile vedere ciò che viene controllato per se il bool è l'operando a sinistra, altri lo odiano ... In breve: preferenza personale è quello che è.

+0

+1 per il collegamento, assolutamente da leggere! –

+0

+1 Yoda amo moltissimo. – nalply

+0

Grazie per il link. È utile conoscere i termini quando si cercano risposte online. – Ken

-1

Dovrebbe essere più veloce, ma non riesco a mettere le mani su un'autorità che lo dice con una semplice ricerca su Google. Vedere:

http://forums.phpfreaks.com/topic/222939-is-there-a-difference-between-ifvar-false-and-iffalse-var/

per un parere.

+0

Non sto cercando di fare la troll, ma non vedo molto il punto di scrivere un riassunto dell'opinione di qualcuno. Ho testato la sua opinione, e ha ragione, ma solo su scala; diciamo, 1-1,5 secondi nelle operazioni a 100M. Vedi http://pastebin.com/XsQ8ypPS –

+0

Oh, segniamo una risposta, poi chiediamo chiarimenti e poi cancelliamo la nostra domanda. Non bello. –

+0

Sono io. Mi sono reso conto che è impossibile scrivere un riassunto di questo forum. Ecco perché ho rimosso la richiesta per scrivere il riepilogo. Quindi ho ritirato la risposta perché ritengo che non sia utile per StackOverflow collegarsi a un forum. Si prega di leggere le FAQ perché non è utile. – nalply

Problemi correlati