Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Как сделать PHP ещё хуже

В Facebook реализовали мою детскую мечту: сделали расширение XHP, которое позволяет писать XML как строку. С тех пор как я увидел E4X (ECMAScript for XML), я страстно хотел увидеть это в PHP.

Потом я подрос и понял, что в PHP это зло:

<?php
// note: includes omitted
if ($_POST['name']) {
  echo <span>Hello, {$_POST['name']}</span>;
} else {
  echo
    <form method="post">
      What is your name?<br />
      <input type="text" name="name" />
      <input type="submit" />
    </form>;
}

С другой стороны я верю в Facebook работают неглупые ребята, что-то они увидели в этой концепции «PHP, язык встраиваемый в HTML» новое и свежее интересное.

По правде сказать, XHP чуть больше, чем упрощённый HEREDOC, он умеет самостоятельно экранировать HTML из суперглобалов или делать это по просьбе программиста, валидировать XML по структуре, описанной прямо на PHP и удалять лишние пробелы.

4 комментария
akhmetov-ru.livejournal.com 2010

Еще один показательный пример из документации ( http://wiki.github.com/facebook/xhp/ ):

$list = <ul />;
foreach ($items as $item) {
  $list->appendChild(<li>{$item}</li>);
}

Евгений Степанищев (bolknote.ru) 2010

Комментарий для akhmetov-ru.livejournal.com:

Назад к средневековью.

sad-wind.ya.ru 2010

Нет чтобы стащить то, что было ещё в VB 9 (синтаксис для LINQ to XML). Там правда не HTML, а целый XML, но какая разница..
Можно долго объяснять чем это круто и при этом не добавляет проблем:
0) Оно компилируется! Со всеми вытекающими плюшками вроде валидного синтаксиса и полным отсутствием проблем с эскейпингом или чем-то ещё. (Вообще, никогда не видел в .Net каких-либо проблем такого рода)
1) родная поддержка неймспейсов(xmlns) и связанная с этим валидация и интеллисенс. Инклудишь в начале файла неймспейсы и жизнь становится лучше.
2) возможность как в ASP.Net включить в середину XML какую-нибудь кодовую вставку, например, цикл.

http://msdn.microsoft.com/en-us/library/bb384808.aspx
http://msdn.microsoft.com/en-us/library/bb384629.aspx

Несмотря на то, что LINQ to XML позволил сильно упростить обработку и создание XML, наличие в VB специального синтаксиса даёт большое дополнительное преимущество. Монстры вроде http://habrahabr.ru/blogs/net/24673 очень сильно сокращаются. http://donxml.com/allthingstechie/archive/2005/10/10/2239.aspx

Евгений Степанищев (bolknote.ru) 2010

Комментарий для sad-wind.ya.ru:

Нет чтобы стащить то, что было ещё в VB 9 (синтаксис для LINQ to XML). Там правда не HTML, а целый XML, но какая разница..

Сомневаюсь, что «стащили» это именно из VB9. Скорее из JavaScript.