- PVSM.RU - https://www.pvsm.ru -

PHP / Nette PHP Framework: первое знакомство

Логотип фреймворка Nette Было очень приятно совершенно случайно обнаружить сайт этого фреймворка [1] во второй половине рабочего дня. Новые фреймворки появляются редко, а тем более редко попадаются механизмы, которые нравятся с первого взгляда. На Хабре описания Nette я не нашел, поэтому поспешил поделиться своей находкой с Вами.

Во-первых, мне сразу приглянулось название. Nette. Это почти как Latte. Только Nette. Как оказалось позднее, есть и Latte — собственный встроенный подающий надежды шаблонизатор. Ого.

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

  • HTML5
  • PHP 5.3
  • встроенные в HTML макросы шаблонизатора
  • технология Context-Aware Escaping
  • конфиги в любопытном формате NEON, на основе которых генерится PHP код
  • собственная реализация базового класса для объектов NetteObject
  • события и подписка на них
  • функции обратного вызова (callbacks)
  • новый потоковый протокол safe:// для атомарного доступа к файловой системе

В-третьих, как оказалось, Nette — это «национальный фреймворк». Нечасто встретишь такое словосочетание. Фреймворк написан чешским программистом Давидом Грудлем. И написан, как оказывается, довольно давно – в 2004-м году. Однако, в открытый доступ код попал только в 2008-м. В соответствии с информацией на сайте, Nette является самым используемым и популярным PHP фреймворком в Чехии. В частности, на его основе сделан сайт президента страны – Вацлава Клауса. Довольно громко.

Нужно сказать, что в описании фреймфорка встретилось немало любопытных и забавных, а главное, свежих вещей, которые хотелось бы изучить подробнее. Но так как это не обзор фреймворка, а только первое знакомство (а кроме того сейчас уже 2 ночи), я ограничусь только основными моментами, которые я смог уяснить и которыми успел зантересоваться.

Работа с формами

Предусмотрена валидация как на стороне клиента (javascript), так и на стороне сервера. Присутствует встроенная защита от атак (XSS и CSRF). Несколько доступных режимов рендеринга формы. Интернационализация (i18n) позволяет создавать мультиязычные формы.

В целом, по функциональности и конструкциям похоже на формы Zend Framework, но как-то более легко и свежо. Вместо страшных зендовских декораторов – более понятные на первый взгляд wrappers [2].

Собственный шаблонизатор

Latte [3]. С хитрыми макросами, встроенными в HTML-теги. На вид, гораздо более читаемо, чем нативный PHP.

Важно, что шаблонизатор эскейпит переменные по умолчанию при выводе на страницу, что не позволяет забыть об этом. Упоминается некоторая умная технология Context-Aware Escaping [4], позволяющая автоматически корректно эскейпить различные переменные. Собственно, громких названий в этом фреймфорке хватает. Но, может, это не так и страшно.

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

В целом, шаблонизатор более простой и понятный, по сравнению с Smarty.

Конфиги

Удобные конфиги. Предлагается их писать в формате NEON [5]. Весьма любопытный формат, вероятно, добавит читаемости огромных деревьям конфигурации. Конфиги можно делить на файлы и мерджить с приоритетами. Одна из черт, которая допускает использование этого фреймворка в больших проектах.

Кроме того

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

Вместо заключения

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

Сайт фреймворка — http://nette.org/en/ [1]

Автор: TedMosby


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/framework/3080

Ссылки в тексте:

[1] сайт этого фреймворка: http://nette.org/en/

[2] wrappers: http://doc.nette.org/en/forms#toc-form-appearance

[3] Latte: http://doc.nette.org/en/templating#toc-latte

[4] Context-Aware Escaping: http://doc.nette.org/en/templating#toc-context-aware-escaping

[5] NEON: http://ne-on.org