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

Нека се запознаем заедно с 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  ← autoloading на всички инсталирани пакети
└── www/              ← публична директория - единствената достъпна от браузъра
    └── index.php     ← първоначален файл, чрез който се стартира приложението

Директорията www/ е предназначена за съхранение на изображения, JavaScript файлове, CSS стилове и други публично достъпни файлове. Само тази директория е достъпна от интернет, така че настройте коренната директория на вашето приложение да сочи точно тук (това можете да настроите в конфигурацията на Apache или nginx, но нека го направим по-късно, сега не е важно).

Най-важната папка за нас е app/. Тук намираме файла Bootstrap.php, в който има клас, който служи за зареждане на целия framework и настройка на приложението. Тук се активира autoloading, настройва се дебъгер и маршрути.

Почистване

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

Tracy (дебъгер)

Изключително важен инструмент за разработка е инструментът за отстраняване на грешки Tracy. Опитайте да предизвикате някаква грешка във файла app/Presentation/Home/HomePresenter.php (напр. като премахнете къдравата скоба в дефиницията на класа HomePresenter) и вижте какво ще се случи. Ще изскочи страница за уведомяване, която описва грешката разбираемо.

debugger screen

Tracy ще ни помогне изключително много, когато търсим грешки в приложението. Също така забележете плаващия Tracy Bar в долния десен ъгъл на екрана, който съдържа информация от работата на приложението.

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

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

След обновяване на страницата вече няма да видим Tracy. Вместо нея ще се покаже удобно за потребителя съобщение:

error screen

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

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

Можем да поправим грешката, която създадохме, и да продължим с писането на приложението.

Изпратете благодарност

Ще ви покажем трик, с който ще зарадвате авторите на софтуер с отворен код. По прост начин можете да дадете звездичка в GitHub на библиотеките, които вашият проект използва. Достатъчно е да стартирате:

composer thanks

Опитайте!