Pull to refresh

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

Reading time 3 min
Views 11K
Логотип фреймворка Nette Было очень приятно совершенно случайно обнаружить сайт этого фреймворка во второй половине рабочего дня. Новые фреймворки появляются редко, а тем более редко попадаются механизмы, которые нравятся с первого взгляда. На Хабре описания Nette я не нашел, поэтому поспешил поделиться своей находкой с Вами.

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

Во-вторых, при беглом осмотре сразу создалось впечатление чего-то передового и свежего (почти как мысли команды PHP, встраивающей в язык гениальной красоты трейты и позабывшей о скучном юникоде):
  • HTML5
  • PHP 5.3
  • встроенные в HTML макросы шаблонизатора
  • технология Context-Aware Escaping
  • конфиги в любопытном формате NEON, на основе которых генерится PHP код
  • собственная реализация базового класса для объектов Nette\Object
  • события и подписка на них
  • функции обратного вызова (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/
Tags:
Hubs:
+38
Comments 81
Comments Comments 81

Articles