Урок 1. Установка Laravel, php, миграции
Итак, давайте все же научимся работать с Laravel. Laravel - это фреймворк веб-приложений PHP, предназначенный для разработки веб–приложений по архитектурному шаблону model–view-controller (MVC). Он имеет выразительный, элегантный синтаксис и предоставляет инструменты, необходимые для больших и надежных приложений.
Начем с того, что нам придется устанавливать Laravel дважды – на нашу рабочую машину и на реальный сервер. Вообще, в коммерческой разработке, очень желательно иметь одинаковые версии ОС, так что если что, то учитесь сразу работать с виртуальными машинами. Но для начала работы, для ознакомления, так сказать, можно и под видоусом начать разработку, а потом переносить уже на убунту реальную готовое. Новый опыт никогда не бывает лишним.
Сначала скачаем и поставим php 7.4. Качаем с windows.php.net – выбираем нужную версию и куда-нибудь распаковываем скачанный архив. Дальше перейдите в эту папку, найдите файл php.ini-development, скопируйте его и переименуйте исходный в php.ini. Примечание - в XAMPP есть тоже PHP, можно и оттуда взять.
Теперь надо скачать и установить XAMPP - берите последнюю версию, но лучше не с PHP 8. Этот будет у нас домашний сервер - апач, база - все в нем.
После этого нам нужен Composer. Берем его с getcomposer.org и в процессе установки показываем ему, где лежит предварительно скачанный PHP.
Далее запускаем XAMPP и переходим в папку htdocs
D:\> cd xampp D:\xampp>cd htdocsСоздаем проект
composer create-project --prefer-dist laravel/laravel new_projectПереходим в папку
D:\xampp\htdocs> cd new_projectИ запускаем
php artisan serveИ получаем ошибку:
PHP Warning: require(/home/matynjr/events/vendor/autoload.php): failed to open stream: No such file or directory in … on line 18 PHP Fatal error: require(): Failed opening required) …. on line 18Фиксим её
composer update --ignore-platform-reqsПробуем запустить снова artisan и наконец-то видим стартовую страницу нашего Lavarel в браузере по адресу
http://localhost/new_project/public/
Отлично, теперь надо разобраться с базой данных. В Shell пишем
php artisan make:migration create_tasks_table --create=tasksКстати, командную строку надо запустить новую, так как в старой идет процесс сервера. После выполнения в папке database/migrations появятся новые файлы.
Теперь надо настроить подключение к базе данных в файле config/database.php (не забыв предварительно создать пользователя и базу данных)
'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3307'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', 'forge'), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],Также не забудем и файл .env
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3307 DB_DATABASE=forge DB_USERNAME=forge DB_PASSWORD=forgeТеперь уже можно
php artisan migrateВсе на месте:
Ну, почти все. Давайте сразу научимся изменять таблицу – вдруг мы забыли поле name:
php artisan make:migration add_name_colums_to_tasks_table --table=tasksЭта команда создаст еще одну миграцию (файл). Теперь мы его немного подправим:
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class AddNameColumsToTasksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('tasks', function (Blueprint $table) { // }); } Schema::table('tasks', function(Blueprint $table){ $table->string('name'); }); /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('tasks', function (Blueprint $table) { // }); } }Ну и в конце занятия создадим модель и на этом пока хватит.
php artisan make:model TaskВ app/models появился файл task.php с таким содержимым
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Task extends Model { use HasFactory; }На следующем уроке мы узнаем, что такое роутинг.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.