Некоторые уловки

Здесь попробую собрать некоторые неожиданные рекомендации, которые не документированы, но описаны как стоящие.
И да, в большинстве я совсем не уверен.

Закрывать или не закрывать <?php

Стандартное выделение кода PHP выглядит так <?php тут код  ?>, также есть и другие способы, которые в основном не рекомендуют использовать, поскольку нет 100% гарантий, что на всех серверах они будут работать и будут поддерживаться в более поздних версиях PHP, например <?     ?> или <%     %>.

Но вот рекомендация не закрывать тег, которую повторяют многие авторитетные издания кажется мне несколько сомнительной (на мой непрофессиональный взгляд, спрошу у учителя на днях). Основной аргумент, я так понимаю, это то что код работает, а при закрытом теге ?> иногда могут возникать проблемы. Но как по мне аргумент слабенький. В официальном справочнике довольно однозначно все описано:

Когда PHP обрабатывает файл, он ищет открывающие и закрывающие теги, такие как <?php и ?>

Почему при этом нужно пропускать ?> мне пока не понятно.

По поводу коротких тегов также написано, что использование нежелательно, но лишь потому, что использование коротких тегов может быть отключено в настройках. Ну так можно же включить.

А вот кстати подъехал и официальный ответ (дочтал справочник до этого места)

Если файл содержит только код PHP, предпочтительно опустить закрывающий тег в конце файла. Это помогает избежать добавления случайных символов пробела или перевода строки после закрывающего тега PHP, которые могут послужить причиной нежелательных эффектов, так как PHP начинает выводить данные в буфер при отсутствии намерения у программиста выводить какие-либо данные в этой точке скрипта.

В общем <?php  и <?= стоит использовать. Но лучше привыкнуть к <?php, поскольку <?= будет выдавать ошибку при использовании в XHTML. А по поводу закрытия — теги закрывать надо, когда это вставка в html код и не надо, когда это отдельный файл, подгружаемый с помощью include или require.

Перевернутый оператор равенства

Забавное отличие программного равенства от обычного математического. Поскольку символ «=» в PHP занят и обозначает присваивание (например $a=1, означает что переменная $a теперь становится равной 1), то равенство обозначается как «==» или «===», причем первое равенство нестрогое, то есть могут быть равны только значения, а второе строгое то есть должны быть равны и значения и типы. То есть 1==»1″ — это тру, а вот 1===»1″ — это фолс, поскольку 1 — это число, а «1» — это строка.

Так вот, когда мы делаем проверку на равенство (при использовании условного оператора) и хотим, например, узнать, а равняется ли переменная $a единице, то мы можем записать это так if($a==1), но лучше (не баг а фича), записать это как if(1==$a). Казалось бы никакой разницы нет. И её действительно нет, если мы все сделаем правильно.

Однако, если мы (вдруг вспомнив учительницу математики) случайно забудем, что равенство пишется как «==» и поставим наше родное человеческое «=», то в первом случае мы вместо выполнения условия получим изменение переменной. Вместо того, чтоб сравнить $a и единицу, мы $a насильно сделаем единицей, и заметьте при этом не получим никаких видимых ошибок. Но фактически вся наша конструкция будет уже в корне неправильной, а мы этого и не заметим.

То ли дело 1=$a, здесь мы пытаемся единице присвоить значения $a, а это невозможно поскольку единица число, а не переменная, соответственно мы при исполнении (проверке) кода сразу же получим ошибку, и быстренько её исправим. Вот так.  В общем для себя принял 1==$a в качестве однозначного стандарта.

 

Булева переменная ложна по умолчанию, иначе — истинна

То есть так нужно делать. И я пока только пытаюсь понять почему именно.