понедельник, 26 июня 2017 г.

LARAVEL. ПРИНЦИП ДЕЙСТВИЯ ФРЕЙМВОРКА

Использует MVC.
Вид - это шаблон. Он не содержит логики. Контроллер - блок, который получает данные от пользователя. Обрабатывает, нормализует, проверят правильность ввода. И передает данные в модель.
Контроллер не должен содержать никакой информации о внешнем виде приложения.
Модель - основа логики приложения. Отвечает за расчеты, выборку информации из БД, изменение информации в БД и т. д. Моделью можно представить библиотеку функций.

Схема работы
Все запросы пользователей перенаправляются сервером в глобальную точку входа по адресу public\index.php

Файл index.php загружает созданный Композером автозагрузчик классов при помощи файла bootstrap\autoload.php

В index.php создается объект глобального класса фреймворка Ларавель с использованием файла bootsrap\app.php

Запрос поступает в ядро обработки http-запросов - класс с именем Kernel. app\Http\Kernel.php
Класс Kernel наследует свой функционал от родительского класса Kernel. Чтобы не было конфликтов для родительского ядра назначен псевдоним HttpKernal.
Путь к нему: \vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php
В этом классе определяется массив bootstrapers, где указан список классов, которые должны запускаться перед выполнением запроса.

\Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables::class,
- класс определения имени среды разработки
\Illuminate\Foundation\Bootstrap\LoadConfiguration::class,
- класс загрузки конфигурации
\Illuminate\Foundation\Bootstrap\HandleExceptions::class, - класс обработки исключений
\Illuminate\Foundation\Bootstrap\RegisterFacades::class,
- класс регистрации фасадов
\Illuminate\Foundation\Bootstrap\RegisterProviders::class,
- класс регистрации
\Illuminate\Foundation\Bootstrap\BootProviders::class, - класс загрузки сервис-провайдеров

Доступные сервис-провайдеры определяются в config\app.php
Массив providers.

Также в app\Http\Kernel.php определен список Middleware.
Это список посредников, т.е промежуточных фильтров, которые должны обработать входящие запросы.
Если каждый из этих фильтров разрешает выолнение запроса, то запрос будет передан дальше.

Ядро app\Http\Kernel.php принимает в качестве входного параметра запрос и отдает ответ. Это видно в точке входа index.php
$response->send();
Как только все сервис-провайдеры зарегестрированы и приложение загружено, запрос пользователя поступает в Роутер.
Фреймворк решает какой маршрут обработает тот или иной запрос.

В качестве обработчика маршрута может быть назначен определенный контроллер или функция.
Если обработчик - контроллер, то запрос передается контроллеру.
Он выполняет необходимые преобразования данных и обращается к модели с запросом данных, которые должны быть отображены на экране.
Если нужны данные из БД, то модель связывается с БД и выбирает данные, приводит их к определенному виду и возвращает контроллеру.
Контроллер передает их виду, который отображает данные на экране.

Если обработчиком выступает функция, то и данные из функции роутера передаются в вид.

Идем в /routes/web.php.
Это маршрут главной страницы:
Route::get('/', function () {
return view('welcome');
});

/ - шаблон
welcome — название вида

\resources\views здесь находятся виды.

Пример
Создадим маршрут для отображения данной страницы: http://tlaravel.loc/page

В /routes/web.php пишем
Route::get('/page', function () {
return view('page');
});

В \resources\views форируем новый вид: page.blade.php
Там пишем Page


Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html