Laravel 9: обзор для новичков

Laravel – самый известный и широко используемый фреймворк PHP.

Люди говорят, что он прост в использовании и очень приятен. Однако поначалу он может показаться немного подавляющим, особенно если вы пришли из таких фреймворков, как Express и Django, “Illuminate” ? “Миграции”? О боже!

Эта статья не является учебником как таковым, но ее цель – дать вам вводное представление о том, что все это значит, чтобы вы могли лучше ознакомиться с этим. Я советую вам также прочитать официальную документацию,

Давайте начнем!

Оглавление

  • Итак, что такое Laravel?
  • Установка Laravel
  • Обзор основных компонентов Laravel
  • Маршрутизация
  • Контроллеры
  • Движок шаблонов Blade
  • Работа с формами
  • Работа с базами данных
    • Подключение к базе данных
    • миграции
    • модели
    • Сеялки и фабрики
  • Заключение

Так что же такое Laravel?

Когда я начинал изучать Laravel, я думал, что это backend-фреймворк, но на самом деле Laravel – это fullstack (может быть интегрирован с Front-end фреймворками), battery-included или “out of the box” PHP-фреймворк.

“Из коробки” означает встроенные функции, которые практически не требуют настройки для работы. Если взять, к примеру, аутентификацию, то в других фреймворках вам, возможно, придется создавать всю систему с нуля, а Laravel уже прикрыл вас. Это огромный плюс к опыту разработки.

Вот почему при установке Laravel вы обнаружите структуру папок (подобно Ruby on Rails), а не пустую папку.

Установка Laravel

Необходимые условия

  • PHP 8.0
  • Принципы ООП PHP
  • Базовые знания о модели MVC
  • composer (опционально)

Установка Laravel

Существует множество вариантов установки Laravel

Самый простой – использовать composer, поэтому убедитесь, что он установлен в вашей системе.

composer create-project laravel/laravel project-name

После завершения установки вы можете открыть его следующим образом

что такое artisan?
artisan – это инструмент командной строки, включенный в Laravel. Он предоставляет ряд команд, которые могут помочь вам в процессе создания приложения.

Обзор основных компонентов Laravel

Маршрутизация

Чтобы определить маршрут для вашего сайта, откройте web.php из папки routes.

Вы используете класс Route для определения маршрута со статическим методом (get, post, put, delete).

статические методы принимают URL и закрытие (функцию обратного вызова)

use IlluminateSupportFacadesRoute;

Route::get('/', function () {

return 'Hello World';

});
Вход в полноэкранный режим Выйти из полноэкранного режима

Вы также можете использовать параметры URL

use IlluminateSupportFacadesRoute;

Route::get('/books/{book}', function ($book) {

return 'The book is' . $book;

});

Войти в полноэкранный режим Выйти из полноэкранного режима

Помните, что имена параметров функций не имеют значения, но их порядок имеет значение!


use IlluminateSupportFacadesRoute;

Route::get('/books/{book}/{comments}', function ($comments, $book) {

return 'Im not the comments iam the book!' . $comments;

});
Вход в полноэкранный режим Выход из полноэкранного режима

передача представления

Ваши представления могут быть либо html, либо blade шаблонизатором, Мы поговорим о blade позже

use IlluminateSupportFacadesRoute;

Route::get('/', function () {

return view('greeting');

});
Вход в полноэкранный режим Выйти из полноэкранного режима

Если ваш маршрут возвращает только представление, вы можете использовать метод view.


Route::view('/', 'greetings');
Войти в полноэкранный режим Выйти из полноэкранного режима

передача данных в представление

Иногда вы можете захотеть отобразить динамические данные. Вы можете передать данные в качестве второго аргумента метода view или использовать помощник with.


use IlluminateHttpRequest;

Route::get('/user', function (Request $request) {

$user = ['name' => 'joe', 'email' => 'joe@email.com'];

return view('user', ['user' => $user]);

// or
return view('user')->with(['user' => $user]);

});

Вход в полноэкранный режим Выйти из полноэкранного режима

и использовать его в своем представлении (это шаблон блейда)


<body>
    <h1>user name is: {{$user->name}}</h1>
    <p>user email is: {{$user->email}}</p>

</body>
Войти в полноэкранный режим Выйти из полноэкранного режима

Однако размещение всей логики в файле routes не принесет ничего хорошего. Пришло время поговорить о контроллерах

Контроллеры

Контроллеры – это средства для организации логики обработки запросов.

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

Вы найдете контроллеры внутри AppHttpControllers.

Чтобы создать контроллер, вы используете команду artisan.

Итак, откройте терминал и введите: php artisan make:controller BookController

Теперь контроллер находится в: AppHttpControllersBookController

Теперь вы готовы определить свои методы

public function index()

{
return view('books');
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Теперь вы готовы использовать его внутри вашего файла маршрута

вместо написания функции обратного вызова вы помещаете свой контроллер внутрь скобок

второй элемент внутри скобок – это имя метода вашего контроллера.

Не забудьте сначала импортировать его!

use AppHttpControllersBookController;

Route::get('/books', [BookController::class, 'index']);
Вход в полноэкранный режим Выход из полноэкранного режима

Шаблонный движок Blade

Blade – это движок шаблонов, который входит в состав Laravel.

Все шаблоны Blade компилируются в простой PHP-код.

Файлы Blade используют расширение .blade.php и обычно находятся в директории resources/views.

рендеринг данных
Если вы читали выше о том, как передавать данные в представления, то видели, что Blade использует двойные фигурные скобки для отображения переменных PHP.

<h1>user name is: {{$user->name}}</h1>
<p>user email is: {{$user->email}}</p>
Вход в полноэкранный режим Выход из полноэкранного режима

Директивы Blade

Blade поставляется с удобным и простым синтаксисом, называемым директивами Blade, для работы с управляющими структурами PHP, такими как условия и циклы

  • условия
@if(1 + 1 == 2) {
    <h1>yes, 1 + 1 equals 2!</h1>
} else {
    <h1>no, 1 + 1 equals 10!</h1>
}
Вход в полноэкранный режим Выход из полноэкранного режима
  • циклы
@for ($i = 0; $i < 10; $i++)

The current value is {{ $i }}

@endfor

@while (true)

<p>I'm looping forever.</p>

@endwhile
Вход в полноэкранный режим Выход из полноэкранного режима

Циклическое прохождение по массиву

@foreach ($users as $user)

<p>This is user {{ $user->id }}</p>

@endforeach

@forelse ($users as $user)

<li>{{ $user->name }}</li>

@empty

<p>No users</p>

@endforelse

Войти в полноэкранный режим Выход из полноэкранного режима

Существует множество других полезных директив, таких как отображение данных, если пользователь аутентифицирован или нет, включение или повторное использование других файлов шаблона… Я предлагаю вам ознакомиться с ними

Работа с формами

Защита от CSRF
Если вы когда-нибудь работали с формами на PHP, то, возможно, слышали поговорку “Никогда не доверяйте вводу пользователя”. Laravel предоставляет простой способ предотвратить CSRF-запросы

Используйте директиву @csrf в каждой форме, и все готово!

<form action="" method="POST">
    @csrf

    <input name="name" type="text" />
    <input name="email" type="email" />
    <input name="password" type="password" />

    <input type="submit" />
</form>
Вход в полноэкранный режим Выход из полноэкранного режима

Обработка запросов формы

Действия вашей формы должны указывать на маршрут, определенный в web.php (см. раздел Маршрутизация), который предпочтительно передает запрос контроллеру (см. раздел Контроллеры).

В Laravel есть класс Request для взаимодействия с HTTP-запросом

  • получение входных данных
class UserController extends Controller
{

public function store(Request $request)

{
    // all inputs values as an array
    $inputs = $request->all();

    // specific input value
    $name = $request->input('name');


}

}
Вход в полноэкранный режим Выход из полноэкранного режима

Работа с базами данных

Подключение к базе данных

Подключиться к базе данных очень просто! Перейдите в файл .env в корневой директории и заполните поля

По умолчанию laravel использует mysql

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=root
DB_PASSWORD=
Вход в полноэкранный режим Выйти из полноэкранного режима

И готово!

все взаимодействие с базой данных будет происходить через “миграции” и “модели”

миграции

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

Чтобы создать тип миграции в CLI

Внутри функции up определите свойства (столбцы):

Вот все доступные типы столбцов

public function up()

{

    Schema::create('posts', function (Blueprint $table) {

        $table->id();

        $table->string('title');

        $table->longText('body');

        $table->timestamps();

});

}
Войти в полноэкранный режим Выйти из полноэкранного режима

модели

Для каждой таблицы существует соответствующая модель. Эта модель является посредником вашей таблицы. Модели используются для извлечения, вставки и удаления строк таблицы.

создание типа модели в CLI

Помните, что Laravel интуитивно понимает имена, поэтому модель Post означает, что существует таблица posts.

Если вы сомневаетесь, что Laravel правильно поймет название таблицы (например, как множественное число осьминога?! 😂). Вы можете явно определить имя с помощью свойства protected table.


namespace AppModels;

use IlluminateDatabaseEloquentModel;

class Post extends Model

{

protected $table = 'my_posts';

}
Вход в полноэкранный режим Выйти из полноэкранного режима

Обычно вы ничего не добавляете в файл модели, если только вам не нужно изменить какую-то конфигурацию или добавить связь с другими моделями.

Вы просто используете ее сразу!


use AppModelsPost

$posts = Post::all(); // get all records

$post = Post::where('title', 'Hello World')->first();


Войти в полноэкранный режим Выход из полноэкранного режима

Сеялки и фабрики

На этапе разработки вы можете захотеть иметь образец данных в таблице для работы. Однако вставлять данные вручную было бы обременительно, поэтому на помощь приходят фабрики и сеялки.

seeders – это просто функции, которые заполняют данные при выполнении. Есть файл по умолчанию, который поставляется с установкой, DBSeeder.php в каталоге database/seeders: Обычно вам понадобится только этот.


class DatabaseSeeder extends Seeder {

    public function run()

    {
        Post::factory()
            ->count(20)
            ->create();
    }

}
Вход в полноэкранный режим Выход из полноэкранного режима

Фабрики – это способ создания поддельных записей данных, Laravel использует для этого пакет faker.

Чтобы создать тип фабрики в CLI

class PostFactory extends Factory

{

    public function definition()

    {

        return [

            'title' => $this->faker->sentence(),

            'body' => $this->faker->text()
        ];

    }

}
Войдите в полноэкранный режим Выйти из полноэкранного режима

Чтобы сгенерировать тип записи данных в CLI

Теперь перейдите к вашей базе данных и вы увидите, что таблица содержит 10 строк.

Заключение

Надеюсь, эта статья помогла вам хоть немного познакомиться с Laravel. Поддержите меня, откликнувшись на этот пост. Это много значит для меня!

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

Оцените статью
Procodings.ru
Добавить комментарий