АЛЕКСАНДР КАЛЕНДАРЕВ, РБК Медиа, программист, akalend@mail.ru
Построение сайтов с использованием Hack
Рассмотрим построение сайтов с помощью нового языка Hack, который является эволюцией PHP
Как уже говорилось в предыдущих частях статьи [1, 2], в Hack запрещен закрывающий скриптовый тег ?>. В основе современного веб-приложения лежит MVC-концепция (Модель-Представление-Контроллер). За слой Представление (View) отвечает специальный модуль, который называют «шаблонизатор». Так как же нам построить шаблонизатор, если запрещен закрывающий скриптовый тег ?>.
Что за зверь XHP?
Разработчики Hack придумали альтернативный шаблонизатору вcтроенный инструмент XHP (XHTML for PHP), который представляет собой разобранное XML-дерево PHP-объектов.
Традиционный вывод в PHP для переменной $word = 'word':
<p><strong>Hello <?= $word ?></strong>!</p>
Или, используя вывод:
echo "<p><strong>Hello $word </strong>!</p>";
А вывод, используемый в XHP, будет следующим:
echo <p><strong>Hello {$word}</strong>!</p>;
С точки зрения грамматики изменения не принципиальны. В синтаксисе РНР при выводе свойств объектов или элементов массивов присутствуют фигурные скобки. Здесь прииспользовании XHP мы видим только отсутствие двойных кавычек. Но разве только в этом разница? И что дает нам XHP?
Во-первых, весь ввод/вывод будет автоматически проверен и все опасные символы будут заменены на escape-последовательность и обратно. То есть использование для ввода функции htmlspecialchars() будет проходить автоматически.
Во-вторых, XHP подразумевает построение HTML-страницы по правилам XHML: на каждый открывающий тег должен быть парный закрывающий, а одиночный тег должен включать закрывающий слеш (<br />).
Например, следующая конструкция:
echo <p><strong>Hello {$word}</strong>!;
(отсутствует закрывающий тег </p>) даст ошибку:
Fatal error: XHP: mismatched tag: 'p' not the same as 'p' in test.php on line
В-третьих, идет проверка на правильность использования основных тегов HTML, например, между открывающим и закрывающим тегами <select> запрещено использовать любые другие теги. При вставке любого другого тега мы получим ошибку:
Fatal error: Element 'select' was rendered with invalid children.
В-четвертых, используя объектную модель (DOM), можно динамически строить необходимые HTML-конструкции.
И, в-пятых, можно самому придумывать пользовательские теги, вроде пользовательских компонент в ASP.NET.
Статью целиком читайте в журнале «Системный администратор», №05 за 2016 г. на страницах 52-55.
PDF-версию данного номера можно приобрести в нашем магазине.
- Календарев А. Введение в язык Hack. // «Системный администратор», №3, 2016 г. – С. 46-50 (http://samag.ru/archive/article/3150).
- Календарев А. Hack. Асинхронность. // «Системный администратор», №4, 2016 г. – С. 66-71 (http://samag.ru/archive/article/3177).
- Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. Приемы объектно-ориентированного проектирования. – СПб: «Питер», 2001.
- Язык Hack. Официальный сайт – www.hacklang.org.
- Owen Yamauchi. Hack and HHVM. – O’Reilly Media. 2015 – http://oreilly.com/catalog/errata.csp?isbn=9781491920879.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|