Создайте своё первое приложение!

Познакомьтесь с 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
├── assets/           ← исходные ресурсы (SCSS, TypeScript, исходные изображения)
├── bin/              ← скрипты для командной строки
├── config/           ← конфигурационные файлы
├── log/              ← логи ошибок
├── temp/             ← временные файлы, кеш, …
├── vendor/           ← библиотеки, установленные Composer
│   └── autoload.php  ← автозагрузка всех установленных пакетов
└── www/              ← публичная папка, единственное место, доступное из браузера
    ├── assets/       ← скомпилированные статические файлы (CSS, JS, изображения, …)
    └── index.php     ← начальный файл, запускающий приложение

Каталог www/ предназначен для хранения изображений, файлов JavaScript, стилей CSS и прочих публично доступных файлов. Это единственный каталог, доступный напрямую из интернета, так что задайте document root вашего веб-сервера так, чтобы он указывал сюда (настроить это можно в 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 в правом нижнем углу экрана, которая показывает важные сведения о работе приложения.

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

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

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

экран ошибки

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

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

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

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

Покажем вам приём, который порадует авторов открытого кода. Вы можете легко поставить на GitHub звезду библиотекам, которые использует ваш проект. Достаточно выполнить:

composer thanks

Попробуйте!