Было очень приятно совершенно случайно обнаружить сайт этого фреймворка во второй половине рабочего дня. Новые фреймворки появляются редко, а тем более редко попадаются механизмы, которые нравятся с первого взгляда. На Хабре описания 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.
Собственный шаблонизатор
Latte. С хитрыми макросами, встроенными в HTML-теги. На вид, гораздо более читаемо, чем нативный PHP.
Важно, что шаблонизатор эскейпит переменные по умолчанию при выводе на страницу, что не позволяет забыть об этом. Упоминается некоторая умная технология Context-Aware Escaping, позволяющая автоматически корректно эскейпить различные переменные. Собственно, громких названий в этом фреймфорке хватает. Но, может, это не так и страшно.
Шаблонизатор должен быть быстрым, так как компилит шаблоны в чистый PHP код и сохраняет их в кэше.
В целом, шаблонизатор более простой и понятный, по сравнению с Smarty.
Конфиги
Удобные конфиги. Предлагается их писать в формате NEON. Весьма любопытный формат, вероятно, добавит читаемости огромных деревьям конфигурации. Конфиги можно делить на файлы и мерджить с приоритетами. Одна из черт, которая допускает использование этого фреймворка в больших проектах.
Кроме того
Механизм для сессий с поддержкой секций во избежание конфликтов имен в больших проектах. Проработанная система кэширования, с разными вариантами хранения значений, тегами и приоритетами. Автолоадер, которому можно указать директории, которые он просканирует на предмет наличия классов и интерфейсов и сохранит эту информацию в кэше.
Вместо заключения
Надо сказать, первое впечатление иногда бывает обманчивым. Я искренне надеюсь, что это не тот случай.
Сайт фреймворка — http://nette.org/en/
Автор: TedMosby