Пять малоизвестных, но полезных особенностей синтаксиса PHP

В этом топике я расскажу о нескольких полезных особенностях синтаксиса PHP, которые не часто встречаются в коде.

Тэг script

Готов поспорить, что любой программировавший на PHP видел тэги и <% %="">, и , и , однако не многие знают, что PHP код можно заключать в тэг скрипт, наподобие javascript:

  1. <script language="php">
  2. // ваш код
  3. </script>

Не беспокойтесь, PHP нормально обработает такой код.

Еще более короткий оператор комментария

Обычно в PHP для комментариев используется // или /**/, но можно так же использовать символ #, для комментирования одной строки.

  1. # комментарий

Альтернативный синтаксис операторов

Впервые я увидел такой синтаксис когда начал изучать CodeIgniter, его советуют использовать для вставки PHP в HTML. Он делает код понятнее для человека не знакомого с PHP, например, дизайнера или верстальщика.

  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. foreach($rows as $user):
  7. ?>
  8. <li><?php echo $user['name']?></li>
  9. <?php
  10. endforeach;
  11. ?>
  12. </body>
  13. </html>

Так же есть endif, endwhile и так далее.

Динамические имена переменных

PHP динамический язык, иногда даже слишком динамический :) Вы можете использовать строковые переменные для обращения к другим переменным. проще взглянуть на код ниже, чем объяснять словам:

  1. $part1='user_';
  2. $part2='name';
  3. ${$part1.$part2}='что-то';
  4. echo $user_name;

Очень полезная вещь, но ее надо использовать очень осторожно, иначе отладка вашего кода превратиться в сущий ад.

Цикл while выглядящий подобно циклу for

Такой вид цикла while содержит итератор цикла прямо в условии, что иногда может быть очень удобным.

  1. $i=0;
  2. while($i++<10)
  3. {
  4. // делаем что-нибудь
  5. }

1 Responses to Пять малоизвестных, но полезных особенностей синтаксиса PHP

  1. gravatar

    На эту тему я могу порассказать... Вот простенький пример. )

    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.

Leave a Reply