Возможный дубликат:
PHP – обратный порядок в выражении if
Проверка нулевого – в каком порядке?
Изучение Zend Framework показало, что они выполняют все переменные проверки обратным образом:
public function setBootstrap($path, $class = null) { if (null === $class) { // instead of if($class === null) $class = 'Bootstrap'; }
В чем причина этого?
Это также подходит для программирования на Java и C ++?
некоторые люди считают, что это помогает им избегать писать сингл =
(задание вместо сравнения для равенства)
Я считаю, что преимущество в этом гораздо меньше, чем потеря удобочитаемости (и, следовательно, ремонтопригодность!)
Люди, которые не проверяют свой код, могут опираться на этот трюк. И чтобы ответить на ваш вопрос, да, он подходит для большинства языков, которые получают свой синтаксис от C – я имею в виду подходящий, не рекомендуется.
Этот стиль называется условиями йоды .
В основном он имеет то же поведение, что и обычный ( $variable === value
) стиль, но с одним преимуществом:
Компилятор выдает ошибку в случае, если вы пишете =
вместо ==
или ===
по ошибке. Поскольку вы не можете переназначить константу (в примере – null
значение), разработчик сразу распознает ошибку из-за ошибки / предупреждения компилятора и, таким образом, освобождается от трудоемкого поиска ошибок.
Таким образом, следующая строка будет действительна, хотя она не будет показывать предполагаемое поведение (большую часть времени):
if ( $var = null ) { echo 'test'; }
Пока здесь показана ошибка:
if ( null = $var ) { echo 'test'; }
Однако основным недостатком является потеря удобочитаемости в этом стиле. Но это зависит от читателя кода и некоторых других правил стиля кодирования.
Это условие yoda, я не знаю о каких-либо выгодах, кроме того, что вы не можете присвоить значение переменной, когда вы случайно пишете, например
if( $foo = "bar" )
Здесь ссылка для других примеров:
http://united-coders.com/christian-harms/what-are-yoda-conditions
В этом случае сравнение учитывает значение счета и тип значения. это строгое сравнение.
Например, этот код:
if (null == "") { echo "null"; }
Будет печатать «null», поскольку PHP обрабатывает «», 0, null, false как эквивалентные пустые значения, если только строгое сравнение не используется для сравнения фактического значения и типа самого значения.
Во-вторых, почему null === $ class используется потому, что вы не можете присвоить значение null. Если вы можете успешно совершить ошибку и присвоить $ class = null.