Если вы являетесь разработчиком Laravel, то эта статья поможет вам узнать о ТОП-10 часто задаваемых вопросов о Laravel Framework.
- 1. Что такое Laravel?
- 2. Что такое контейнер IoC (инверсия контроля) или сервисный контейнер?
- 3. Что такое фасады Laravel?
- 4. Что такое middleware Laravel?
- 5. Что такое CSRF? Почему он используется?
- 6. Что такое Bootstrap?
- 7. Что такое контракты laravel?
- 8. Какие каталоги нуждаются в разрешении на запись для установки и запуска Laravel?
- 9. Что такое Composer?
- 10. Требования к последней версии Laravel и некоторые новые функции
1. Что такое Laravel?
Laravel – это PHP-фреймворк с открытым исходным кодом, созданный Тайлором Отвеллом в июне 2011 года. Он следует архитектурному шаблону MVC.
2. Что такое контейнер IoC (инверсия контроля) или сервисный контейнер?
Инверсия контроля, или сокращенно IoC, является техникой, которая позволяет инвертировать контроль выполнения в сравнении с классическим процедурным кодом. Наиболее известная форма IoC – это конечно Инъекция зависимости или DI. Контейнер IoC в Laravel – одна из наиболее часто используемых его возможностей, хотя и возможно менее понимаемая.
Вот простой пример использования Инъекции зависимости, чтобы получить инверсию контроля.
class JeepWrangler
{
public function __construct(Petrol $fuel)
{
$this->fuel = $fuel;
}
public function refuel($litres)
{
return $litres * $this->fuel->getPrice();
}
}
class Petrol
{
public function getPrice()
{
return 130.7;
}
}
$petrol = new Petrol;
$car = new JeepWrangler($petrol);
$cost = $car->refuel(60);
Используя инъекцию через конструктор, мы теперь делегировали создание инстанса Petrol
вызывающему объекту, таким образом реализовав инверсию контроля. Наш класс JeepWrangler
не должен знать, от куда он получит объект Petrol
.
Но какое это все имеет отношение к Laravel? На самом деле очень большое. Laravel, если вы не знали, сам по себе является IoC контейнером. Контейнер это объект, который как вы уже могли догадаться, содержит другие объекты. Контейнер IoC в Laravel используется для хранения множества разных связей. Все что вы делаете в Laravel в какой-то степени взаимодействует с IoC контейнером. Это взаимодействие в большинстве случаев принимает форму получения связей.
Если вы откроете любой из существующих service provider’ов в Laravel, то скорее всего увидите в методе register
что-то похоже на это (пример максимально упрощен).
$this->app['router'] = $this->app->share(function($app) {return new Router;});
Вот очень, очень простая привязка. Она состоит из имени связи (router
) и способа её получения (замыкания). Когда мы пытаемся получить эту связь из контейнера, мы в ответ получим инстанс Router
.
Laravel обычно группирует схожие имена связей, например
session
иsession.store
.
Чтобы получить связь, мы можем использовать метод контейнера make
.
$router = $this->app->make('router');
Вот, что контейнер делает в своей самой базовой форме. Но, как и большинство вещей в Laravel, здесь внутри еще есть много всего, помимо привязок и разрешения классов.
3. Что такое фасады Laravel?
Фасады предоставляют «статический» интерфейс к классам, доступным в сервис-контейнере. Laravel поставляется со множеством фасадов, предоставляющих доступ почти ко всем возможностям Laravel. Фасады Laravel служат «статическими прокси» для классов в сервис-контейнере, обеспечивая преимущества краткого выразительного синтаксиса, и поддерживая большую тестируемость и гибкость, чем традиционные статические методы.
Все фасады Laravel определены в пространстве имён Illuminate\Support\Facades. Поэтому мы можем легко обратиться к фасаду таким образом:
use Illuminate\Support\Facades\Cache;
Route::get('/cache', function () {
return Cache::get('key');
});
Во многих примерах в документации по Laravel используются фасады для демонстрации различных возможностей фреймворка.
Фасады имеют много преимуществ. Они обеспечивают лаконичный, запоминающийся синтаксис, который позволяет вам использовать возможности Laravel, не запоминая длинные имена классов, которые должны внедряться или настраиваться вручную. Более того, благодаря уникальному использованию динамических методов PHP они легко тестируются.
4. Что такое middleware Laravel?
Посредники (англ. middleware) предоставляют удобный механизм для фильтрации HTTP-запросов вашего приложения. Например, в Laravel есть посредник для проверки аутентификации пользователя. Если пользователь не аутентифицирован, посредник перенаправит его на экран входа в систему. Если же пользователь аутентифицирован, посредник позволит запросу пройти далее в приложение.
Конечно, посредники нужны не только для авторизации. CORS-посредник может пригодиться для добавления особых заголовков ко всем ответам в вашем приложении. А посредник логов может зарегистрировать все входящие запросы.
В Laravel есть несколько стандартных посредников, включая посредники для аутентификации и CSRF-защиты. Все они расположены в каталоге app/Http/Middleware.
5. Что такое CSRF? Почему он используется?
Laravel позволяет легко защитить ваше приложение от атак с подделкой межсайтовых запросов (CSRF). Подделка межсайтовых запросов — тип атаки на сайты, при котором несанкционированные команды выполняются от имени аутентифицированного пользователя.
Laravel автоматически генерирует CSRF-“токен” для каждой активной пользовательской сессии в приложении. Этот токен используется для проверки того, что именно авторизованный пользователь делает запрос в приложение.
При определении каждой HTML-формы вы должны включать в неё скрытое поле CSRF-токена, чтобы посредник CSRF-защиты мог проверить запрос. Вы можете использовать вспомогательную функцию csrf_field()
для генерирования поля токена:
<form method="POST" action="/profile">
{{ csrf_field() }}
...
</form>
Посредник VerifyCsrfToken
, входящий в группу посредников web, автоматически проверяет совпадение токена в данных запроса с токеном, хранящимся в сессии.
6. Что такое Bootstrap?
Ответ: Bootstrap – это точка входа для запуска фреймворка Laravel.
7. Что такое контракты laravel?
Контракты в Laravel — это набор интерфейсов, которые описывают основной функционал, предоставляемый фреймворком. Например, контракт Illuminate\Contracts\Queue\Queue определяет методы, необходимые для организации очередей, в то время как контракт Illuminate\Contracts\Mail\Mailer определяет методы, необходимые для отправки электронной почты.
Каждый контракт имеет свою реализацию во фреймворке. Например, Laravel предоставляет реализацию Queue
с различными драйверами и реализацию Mailer
, использующую SwiftMailer.
Все контракты Laravel живут в своих собственных репозиториях GitHub. Эта ссылка ведёт на все доступные контракты, а также на один отдельный пакет, который может быть использован разработчиками пакетов.
8. Какие каталоги нуждаются в разрешении на запись для установки и запуска Laravel?
Ответ: storage и bootsrap / cache
9. Что такое Composer?
Ответ: Composer-это менеджер зависимостей PHP. Он управляет всей
Composer – это пакетный менеджер зависимостей, предназначенный для упрощения загрузки и установки сторонних php библиотек в проект. Например, с помощью него можно очень просто добавить в разрабатываемый проект php пакеты, а также развернуть другие проекты, которые распространяются вместе с файлом «composer.json».
«composer.json» – это текстовый файл, в котором в формате JSON описаны все сторонние пакеты от которых зависит данный проект.
10. Требования к последней версии Laravel и некоторые новые функции
На текущий момент последняя версия Laravel-6. Что является версией LTS.
Требования к серверу Laravel 6
PHP> = 7.2.0 >
PHP Extensions: BCMath, Ctype, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML
Новые функции в фреймворке:
Семантическое управление версиями
Laravel Vapor
Lazy Collections
Laravel UI
New Error Page Ignition
Job Middleware
и некоторые улучшения