В этом топике я расскажу о нескольких полезных особенностях синтаксиса PHP, которые не часто встречаются в коде.
Тэг script
Готов поспорить, что любой программировавший на PHP видел тэги и <% %="">, и ?>, и , однако не многие знают, что PHP код можно заключать в тэг скрипт, наподобие javascript:
<script language="php"> // ваш код </script>
Не беспокойтесь, PHP нормально обработает такой код.
Еще более короткий оператор комментария
Обычно в PHP для комментариев используется // или /**/, но можно так же использовать символ #, для комментирования одной строки.
# комментарий
Альтернативный синтаксис операторов
Впервые я увидел такой синтаксис когда начал изучать CodeIgniter, его советуют использовать для вставки PHP в HTML. Он делает код понятнее для человека не знакомого с PHP, например, дизайнера или верстальщика.
<html> <head> </head> <body> <?php foreach($rows as $user): ?> <li><?php echo $user['name']?></li> <?php endforeach; ?> </body> </html>
Так же есть endif, endwhile и так далее.
Динамические имена переменных
PHP динамический язык, иногда даже слишком динамический :) Вы можете использовать строковые переменные для обращения к другим переменным. проще взглянуть на код ниже, чем объяснять словам:
$part1='user_'; $part2='name'; ${$part1.$part2}='что-то'; echo $user_name;
Очень полезная вещь, но ее надо использовать очень осторожно, иначе отладка вашего кода превратиться в сущий ад.
Цикл while выглядящий подобно циклу for
Такой вид цикла while содержит итератор цикла прямо в условии, что иногда может быть очень удобным.
$i=0; while($i++<10) { // делаем что-нибудь }


На эту тему я могу порассказать... Вот простенький пример. )
PHP позваляет выполнять cast для переменных.
Нет вопросов, когда это "очевидно":
$str = '123a';
$int = (int)$str; // 123
Но можно и вот так:
$arr = array(1, 2, 3); // array(0 => 1, 1 => 2, 2 =>3);
$obj = (object)$arr; // создадим объект класса stdobject на основе массива.
$obj = (object)array(1, 2, 3); // краткая версия и память экономит. )
Казалось бы, что тут такого... но ведь теперь в объекте содержатся поля с числовыми именами - т.е. ситуацию можно описать таким "как бы PHP кодом":
class Worst{
$0 = 1;
$1 = 2;
$2 = 3;
}
тогда $obj = new Worst; // круглы скобки тут не нужны.
Конечно сам такой код работать не будет, но ведь объект такой имеется... как же получить доступ к его свойствам?
$obj->0; // Error. Как и $obj->1 ...
$obj->{0} // Right.