2010-12-02 1 views
4

Почему форма if подобные заявления ...В чем причина упорядочения оператора if таким образом?

if (null === $this->foo){...} 
if (0 === count($bar)){...} 

, а не ...

if ($this->foo === null){...} 
if (count($bar) === 0){...} 

Я заметил это в коде ряда кодеров и проектов, которые я уважаю, но я не» Я знаю, почему они так делают. Я делаю это вторым способом, так как это следует за моим мышлением: «Если это значение идентично нулевому, тогда ...», тогда как запрос «Если значение null идентично этому значению ...» кажется мне менее очевидным. Итак ... почему?

+5

Его называют «Yoda говорит»;) – KingCrunch 2010-12-02 00:25:56

+0

@KingCrunch я совсем как ярлык «Yoda Conditions» – tobyodavies 2010-12-02 01:05:34

ответ

16

Он предназначен для обеспечения того, чтобы вы случайно не положили if (this-> foo = null) вместо double ==.

Это ошибка, PHP будет ловить для вас автоматически

if (null = $foo) {} 

в то время как это, вероятно, ошибка (хотя это может быть преднамеренным и иногда полезно)

if ($foo = null) {} 

Итак, заказав ваш таким образом, вы защищаете себя от случайного присвоения значения вместо того, чтобы сравнивать их.