Пишем первое приложение!

Давайте познакомимся с Nette Framework, создавая простой блог с комментариями. Начнем!

Уже после первых двух глав у нас будет свой собственный работающий блог, и мы сможем публиковать свои замечательные посты, хотя функциональность пока будет в значительной степени ограничена. Вам также следует прочитать следующие главы, где мы запрограммируем добавление комментариев, редактирование статей и, наконец, обезопасим блог.

Это руководство предполагает, что вы прочитали страницу Установка и успешно подготовили необходимые инструменты. Также предполагается, что вы понимаете объектно-ориентированное программирование в PHP.

Пожалуйста, используйте PHP 8.1 или новее. Полное приложение можно найти на GitHub.

Приветственная страница

Начнем с создания нового проекта в каталоге nette-blog:

composer create-project nette/web-project nette-blog

В этот момент стартовая страница Web Project уже должна работать. Проверим это, открыв браузер по следующему URL-адресу:

http://localhost/nette-blog/www/

и увидим стартовую страницу Nette Framework:

Приложение работает, и вы можете начать вносить изменения.

Если возникла проблема, попробуйте эти советы.

Содержимое Web Project

Web Project имеет следующую структуру:

nette-blog/
├── app/              ← каталог приложения
│   ├── Core/         ← базовые классы, необходимые для работы
│   ├── Presentation/ ← презентеры, шаблоны и т.п.
│   │   └── Home/     ← каталог презентера Home
│   └── Bootstrap.php ← загрузочный класс Bootstrap
├── bin/              ← скрипты, запускаемые из командной строки
├── config/           ← конфигурационные файлы
├── log/              ← логирование ошибок
├── temp/             ← временные файлы, кеш, …
├── vendor/           ← библиотеки, установленные Composer
│   └── autoload.php  ← автозагрузка всех установленных пакетов
└── www/              ← публичный каталог - единственный доступный из браузера
    └── index.php     ← начальный файл, с которого запускается приложение

Каталог www/ предназначен для хранения изображений, JavaScript-файлов, CSS-стилей и других общедоступных файлов. Только этот каталог доступен из интернета, поэтому настройте корневой каталог вашего приложения так, чтобы он указывал именно сюда (это можно настроить в конфигурации Apache или nginx, но давайте сделаем это позже, сейчас это не важно).

Самая важная папка для нас — app/. Здесь мы найдем файл Bootstrap.php, в котором находится класс, служащий для загрузки всего фреймворка и настройки приложения. Здесь активируется автозагрузка, настраивается отладчик и маршруты.

Очистка

Web Project содержит стартовую страницу, которую мы удалим перед тем, как начнем что-либо программировать. Без опасений заменим содержимое файла app/Presentation/Home/default.latte на “Hello world!”.

Tracy (отладчик)

Чрезвычайно важный инструмент для разработки — инструмент отладки Tracy. Попробуйте вызвать какую-нибудь ошибку в файле app/Presentation/Home/HomePresenter.php (например, удалив фигурную скобку в определении класса HomePresenter) и посмотрите, что произойдет. Появится страница уведомления, которая понятно описывает ошибку.

экран отладчика

Tracy нам очень поможет, когда мы будем искать ошибки в приложении. Также обратите внимание на плавающий Tracy Bar в правом нижнем углу экрана, который содержит информацию о выполнении приложения.

В production-режиме Tracy, конечно, отключена и не отображает никакой конфиденциальной информации. Все ошибки в этом случае сохраняются в папке log/. Давайте попробуем это. В файле app/Bootstrap.php раскомментируем следующую строку и изменим параметр вызова на false, чтобы код выглядел так:

...
$this->configurator->setDebugMode(false);
...

После обновления страницы мы больше не увидим Tracy. Вместо нее отобразится дружественное пользователю сообщение:

экран ошибки

Теперь посмотрим в каталог log/. Здесь (в файле exception.log) мы найдем залогированную ошибку, а также уже знакомую страницу с сообщением об ошибке (сохраненную как HTML-файл с именем, начинающимся на exception-).

Снова закомментируем строку // $configurator->setDebugMode(false);. Tracy автоматически включает режим разработки на localhost и отключает его везде.

Ошибку, которую мы создали, можно исправить и продолжить писать приложение.

Отправьте благодарность

Мы покажем вам трюк, которым вы порадуете авторов open source. Простым способом вы можете поставить звездочку на GitHub библиотекам, которые использует ваш проект. Достаточно запустить:

composer thanks

Попробуйте!