Руководство для начинающих по настройке проекта в Laravel

В этой статье мы рассмотрим основные компоненты Laravel и как можно использовать Laravel для создания небольшого проекта.

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

Необходимые условия: Начало работы с Laravel

Прежде чем погрузиться в разработку на Laravel, необходимо убедиться, что у нас установлены все необходимые инструменты и программное обеспечение. Вот что нам понадобится:

  • PHP. Laravel работает на PHP, поэтому первым шагом является обеспечение наличия PHP на вашей системе. Если вы не уверены, установлен ли PHP, откройте терминал или командную строку и введите php -v. Если PHP установлен, вы увидите номер версии. Если нет, вам нужно будет его установить.

    Чтобы установить PHP на ваш компьютер, у нас есть несколько вариантов:

    Локальная установка. Вы можете установить PHP напрямую на свой компьютер. Посетите страницу загрузки PHP, чтобы получить последнюю версию для вашей операционной системы.

    Laravel Homestead. Для более упрощенной настройки, особенно если вы новичок в разработке на PHP, рассмотрите возможность использования Laravel Homestead. Homestead — это предварительно упакованная Vagrant-коробка, которая предоставляет полную среду разработки для Laravel. Вы можете найти инструкции по установке здесь.

  • Composer. Laravel использует Composer для управления зависимостями. Composer является стандартным менеджером зависимостей PHP и широко используется и хорошо документирован.

  • Установка Laravel. Laravel можно установить глобально в нашей системе с помощью Установщика Laravel, удобного инструмента командной строки, который упрощает и ускоряет процесс создания новых проектов Laravel. Чтобы установить его глобально на вашу систему, выполните следующие шаги:

    1. Откройте терминал или командную строку.
    2. Выполните следующую команду Composer:
    composer global require laravel/installer
    

    После завершения установки убедитесь, что каталог глобальных бинарных файлов Composer включен в системный “PATH”, чтобы вы могли запускать команду laravel из любого места.

    Если вы предпочитаете более легковесную альтернативу Homestead, вы можете рассмотреть Laravel Herd. Herd — это локальная среда разработки на основе Docker, специально разработанная для проектов Laravel. Более подробную информацию о Herd и о том, как настроить его, можно найти здесь.

Настроив среду разработки с PHP, Composer и Laravel Installer (или изучив варианты, такие как Homestead или Herd), вы будете хорошо подготовлены к началу путешествия с Laravel. В следующих разделах мы рассмотрим процесс создания нового проекта Laravel, изучим его структуру каталогов и настроим среду разработки.

Настройка нового проекта Laravel

Теперь, когда у нас готова среда разработки, пришло время создать новый проект Laravel. Чтобы создать новый “пустой” проект, мы можем использовать следующую команду терминала:

composer create-project --prefer-dist laravel/laravel project-name

project-name следует заменить на фактическое название проекта. Эта команда загрузит последнюю версию Laravel и создаст новую директорию проекта со всеми необходимыми файлами и зависимостями.

Структура каталогов: Навигация в проекте Laravel

После создания нового проекта Laravel мы столкнемся с хорошо организованной структурой каталогов. Понимание этой структуры важно для эффективной разработки Laravel. Вот некоторые ключевые директории и их назначение:

  • app. В этом каталоге находится основная логика нашего приложения, включая контроллеры, модели и сервис-провайдеры.
  • bootstrap. В этом каталоге расположены файлы инициализации и конфигурации Laravel.
  • config. Здесь можно найти файлы конфигурации различных компонентов нашего приложения, что позволяет нам находить и настраивать параметры, такие как подключения к базе данных и сервисы, в одной точке проекта.
  • Database. В этом каталоге мы определим наши миграции базы данных и сеиды, которые будут использоваться ORM Eloquent Laravel. Eloquent упрощает управление базами данных.
  • public. Публично доступные ресурсы, такие как CSS, JavaScript и изображения, находятся здесь. В этом каталоге также находится точка входа в наше приложение, файл index.php.
  • resources. Здесь хранятся необработанные, некомпилированные ресурсы нашего приложения, такие как шаблоны Blade, Sass и JavaScript.
  • routes. Конфигурация маршрутизации Laravel управляется в этом каталоге.
  • storage. Временные и кэш-файлы, а также журналы хранятся здесь.
  • vendor. Composer управляет зависимостями нашего проекта в этом каталоге. Все загруженные библиотеки будут находиться в этом каталоге.

Конфигурация: Настройка базы данных и переменных окружения

Для настройки соединения с нашей базой данных нам нужно открыть файл .env в корневом каталоге проекта. Здесь мы можем указать тип базы данных, хост, имя пользователя, пароль и имя базы данных. Благодаря Eloquent ORM, Laravel поддерживает несколько соединений с базами данных, что делает его универсальным для различных требований проектов.

Понимание файла .env

Файл .env – это место, где мы определяем значения конфигурации, специфичные для окружения, такие как детали соединения с базой данных, ключи API и другие настройки. Давайте рассмотрим простой пример того, что вы можете найти в файле .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=my_username
DB_PASSWORD=my_password

В этом примере:

  • DB_CONNECTION указывает тип драйвера базы данных, который мы используем (например, MySQL, PostgreSQL, SQLite).
  • DB_HOST указывает хост, где находится наш сервер базы данных.
  • DB_PORT указывает порт, на котором работает сервер базы данных.
  • DB_DATABASE указывает имя базы данных, к которой мы хотим подключиться.
  • DB_USERNAME и DB_PASSWORD указывают имя пользователя и пароль, необходимые для доступа к базе данных.

Использование переменных окружения

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

Например, в наших конфигурационных файлах Laravel (расположенных в директории config/), мы можем ссылаться на конфигурацию базы данных следующим образом:

'mysql' => [
    'driver' => env('DB_CONNECTION', 'mysql'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    // ...
],

Здесь функция env() извлекает значение указанного переменной среды из файла .env. Если переменная не найдена, она возвращается к значению по умолчанию, предоставленному в качестве второго аргумента.

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

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

Маршрутизация, Контроллеры и Представления: Сердце Вашего Приложения Laravel

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

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

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

В Laravel мы можем определять маршруты в файле routes/web.php. Базовое определение маршрута выглядит следующим образом:

Route::get('/welcome', function () {
    return view('welcome');
});

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

Создание контроллера

Контроллеры выступают мостом между нашими маршрутами и логикой приложения. Для создания контроллера можно использовать команду make:controller:

php artisan make:controller YourControllerName

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

Представления и шаблоны Blade

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

public function index()
{
    $data = ['name' => 'John'];
    return view('welcome', $data);
}

В этом примере представление welcome рендерится с данными, в данном случае передается 'name'.

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

Миграция и засеивание базы данных

Система миграции и засева базы данных Laravel позволяет нам определять схему базы данных и заполнять её начальными данными. Миграции можно рассматривать как контролируемые версионированием изменения базы данных, а сеeding — как процесс добавления образцовых данных.

Миграции и засев — это чрезвычайно мощные концепции, обеспечивающие согласованность базы данных в разных средах.

Для создания миграции можно использовать команду make:migration:

php artisan make:migration create_table_name

Затем редактируем сгенерированный файл миграции для определения структуры таблицы, после чего используем Artisan для выполнения миграции:

php artisan migrate

Сеeding часто используется для заполнения таблиц начальными данными для тестирования и разработки. Для создания сеедеров можно использовать команду make:seeder и запускать их с помощью:

php artisan db:seed

Создание Моделей для Взаимодействия с Базой Данных

ORM Eloquent Laravel упрощает взаимодействие с базами данных, позволяя работать с ними, как с объектами. Для создания модели используется команда make:model:

php artisan make:model YourModelName

Определите таблицу и отношения в модели для облегчения извлечения и манипуляции данными. Например, чтобы извлечь все записи из таблицы users:

$users = YourModelName::all();

Имея всю эту информацию, включая маршрутизацию, контроллеры, представления, миграции базы данных, засев и модели, мы на пути к созданию динамических веб-приложений с помощью Laravel. В следующих разделах мы углубимся в создание простого CRUD-приложения и изучим более продвинутые функции Laravel.

Создание Простого CRUD-Приложения на Laravel

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

Для удобства изложения в этой статье мы сосредоточимся только на создании начальной страницы приложения, так что доработка этого приложения зависит от вас!

Шаг 1: Создание миграции для таблицы книг

Чтобы сгенерировать миграцию для таблицы books, используйте следующую команду:

php artisan make:migration create_books_table

Эта команда создает файл миграции для таблицы books в базе данных. Далее отредактируйте созданный файл миграции (database/migrations/YYYY_MM_DD_create_books_table.php), чтобы определить структуру таблицы:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBooksTable extends Migration
{
    public function up()
    {
        Schema::create('books', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('author');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('books');
    }
}

В этом файле миграции мы определяем структуру таблицы books, включая ее столбцы (id, title, author, timestamps). Затем запустим миграцию для создания таблицы:

php artisan migrate

Эта команда выполняет файл миграции и создает таблицу books в базе данных.

Шаг 2: Создание сидера для таблицы книг

Далее, мы хотим сгенерировать сидер для таблицы books, чтобы заполнить ее некоторыми начальными данными:

php artisan make:seeder BooksTableSeeder

Эта команда создает файл сидера для заполнения таблицы books начальными данными.

Отредактируйте файл сидера (database/seeders/BooksTableSeeder.php), чтобы определить пример данных о книгах:

use Illuminate\Database\Seeder;

class BooksTableSeeder extends Seeder
{
    public function run()
    {
        DB::table('books')->insert([
            ['title' => 'Book 1', 'author' => 'Author A'],
            ['title' => 'Book 2', 'author' => 'Author B'],
            ['title' => 'Book 3', 'author' => 'Author C'],
        ]);
    }
}

В этом файле сидера мы определяем примерные данные о книгах, которые будут вставлены в таблицу books. В данном случае мы создаем книги с 1 по 3 и авторов от А до С.

Запустите сидер для заполнения таблицы books:

php artisan db:seed --class=BooksTableSeeder

Эта команда выполняет файл сидера и заполняет таблицу books определенными примерными данными.

Шаг 3: Создание контроллера

Создайте контроллер для управления книгами:

php artisan make:controller BookController

Эта команда создает файл контроллера (BookController.php), содержащий методы для обработки операций CRUD, связанных с книгами. С созданным контроллером, давайте сосредоточимся на реализации методов CRUD в BookController. Он находится в app/Http/Controllers/BookController.php:

use App\Book; // Импортируйте модель Book

public function index()
{
    $books = Book::all();
    return view('books.index', compact('books'));
}

public function create()
{
    return view('books.create');
}

public function store(Request $request)
{
    $book = new Book;
    $book->title = $request->input('title');
    $book->author = $request->input('author');
    $book->save();

    return redirect()->route('books.index');
}

// Реализуйте методы редактирования, обновления, показа и удаления аналогично

В этом файле контроллера мы определяем методы для обработки операций CRUD, связанных с книгами. Например, метод index извлекает все книги из базы данных и передает их в представление index, в то время как метод store создает новую запись книги на основе данных, предоставленных через форму. Метод create() отвечает за отображение формы для создания новой записи книги. Когда пользователь переходит по маршруту, связанному с этим методом, Laravel выполнит эту функцию и вернет представление под названием books.create.

Шаг 4: Создание представлений

Создайте представления для вывода списка, создания и редактирования книг в папке resources/views.

Пример представления (create.blade.php):

@extends('layout')

@section('content')
  <h1>Create a New Book</h1>
  <form method="POST" action="{{ route('books.store') }}">
    @csrf
    <div class="form-group">
      <label for="title">Title</label>
      <input type="text" name="title" class="form-control" id="title" placeholder="Enter book title">
    </div>
    <div class="form-group">
      <label for="author">Author</label>
      <input type="text" name="author" class="form-control" id="author" placeholder="Enter author name">
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
  </form>
  <a href="{{ route('books.index') }}">Back to the list</a>
@endsection

В этом примере представление create содержит форму для добавления новой книги. Форма отправляет данные методу store из BookController. Директива @csrf генерирует токен CSRF для защиты от подделки межсайтовых запросов.

На основе этого примера вы сможете самостоятельно реализовать методы контроллера и представления для остальных операций CRUD, так что приступайте к работе!

Заключение

В данной статье мы рассмотрели основы приложения Laravel: как можно использовать командную строку для создания приложения, структуру приложения Laravel и как создать приложение CRUD в Laravel.

I hope this article was useful and that you’re now capable of using Laravel to create your applications and expand the information here with more advanced topics. More information on Laravel can be found at the official Laravel website.

Source:
https://www.sitepoint.com/laravel-project-setup-beginners-guide/