Nette Documentation Preview

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

.[perex]
Познакомьтесь с фреймворком Nette, создав простой блог с комментариями. Давайте начнём!

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

.[tip]
В данном руководстве предполагается, что вы выполнили документ " [Установка |nette:installation] " и успешно настроили инструментарий. Также предполагается, что вы понимаете [объектно-ориентированное программирование на PHP |nette:introduction-to-object-oriented-programming].

Пожалуйста, используйте PHP 8.1 или более позднюю версию. Полное приложение вы можете найти [на GitHub |https://github.com/nette-examples/quickstart/tree/v4.0].


Приветственная страница .[#toc-the-welcome-page]
================================================

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

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

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

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

и вы увидите страницу приветствия фреймворка:

[* qs-welcome.webp .{url: http://localhost/nette-blog/www/} *]

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

.[note]
Если у вас возникли проблемы, [попробуйте воспользоваться несколькими советами |nette:troubleshooting#Nette-Is-Not-Working-White-Page-Is-Displayed].


Содержание веб-проекта .[#toc-web-project-s-content]
====================================================

Наш проект имеет следующую структуру:

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

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

Наиболее важным каталогом для вас является `app/`. Там можно найти файл `Bootstrap.php`, внутри которого находится класс, загружающий фреймворк и конфигурирующий приложение. Он активирует [автозагрузку |robot-loader:] и устанавливает [отладчик |tracy:] и [маршруты |application:routing].


Очистка .[#toc-cleanup]
=======================

Веб-проект содержит страницу приветствия, которую мы можем удалить — смело замените содержимое файла `app/UI/Home/default.latte` текстом `Hello world!`.


[* qs-hello.webp .{url:-} *]


Tracy (отладчик) .[#toc-tracy-debugger]
=======================================

Чрезвычайно важным инструментом для разработки является [отладчик под названием Tracy |tracy:]. Попробуйте сделать несколько ошибок в вашем файле `app/UI/Home/HomePresenter.php` (например, удалите фигурную скобку из определения класса HomePresenter) и посмотрите, что произойдет. Появится страница с красным экраном и понятным описанием ошибки.

[* qs-tracy.avif .{url:-}(debugger screen) *]

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

[* qs-tracybar.webp .{url:-} *]

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

```php .{file:app/Bootstrap.php}
...
$configurator->setDebugMode(false);
$configurator->enableTracy(__DIR__ . '/../log');
...
```

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

[* qs-fatal.webp .{url:-}(error screen) *]

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

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

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


Отправьте спасибо .[#toc-send-thanks]
=====================================

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

```shell
composer thanks
```

Попробуйте!

{{priority: -1}}
{{sitename: Быстрый старт с Nette}}

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

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

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

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

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

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

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

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

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

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

и вы увидите страницу приветствия фреймворка:

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

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

Содержание веб-проекта

Наш проект имеет следующую структуру:

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

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

Наиболее важным каталогом для вас является app/. Там можно найти файл Bootstrap.php, внутри которого находится класс, загружающий фреймворк и конфигурирующий приложение. Он активирует автозагрузку и устанавливает отладчик и маршруты.

Очистка

Веб-проект содержит страницу приветствия, которую мы можем удалить — смело замените содержимое файла app/UI/Home/default.latte текстом Hello world!.

Tracy (отладчик)

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

debugger screen

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

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

...
$configurator->setDebugMode(false);
$configurator->enableTracy(__DIR__ . '/../log');
...

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

error screen

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

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

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

Отправьте спасибо

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

composer thanks

Попробуйте!