Создание и запуск проекта Slim
Что такое Slim?
Slim — это легковесный PHP микрофреймворк, предназначенный для быстрого создания простых, но мощных веб-приложений и API. Он предоставляет основные функции маршрутизации, обработки запросов и ответов, что подходит для проектов, требующих быстрого разработки и развертывания.
Основные особенности и преимущества Slim
- Легкий: Фреймворк Slim очень компактный, подходит для создания небольших и средних приложений.
- Гибкий: Может интегрироваться с любыми сторонними компонентами или библиотеками, предоставляя большую гибкость.
- Прост в использовании: Простая API и четкая документация позволяют разработчикам быстро приступить к работе.
- Мощная маршрутизация: Поддерживает различные HTTP-методы и сложную конфигурацию маршрутов.
- Поддержка промежуточного ПО: Можно легко добавлять промежуточное ПО для обработки запросов и ответов.
Slim является идеальным выбором для создания RESTful API и быстрого прототипирования.
Создание и запуск проекта Slim с использованием ServBay
В этой статье мы будем использовать предоставленную ServBay среду PHP для создания и запуска проекта Slim. Мы воспользуемся функцией "хостов" ServBay для настройки веб-сервера и реализуем доступ к проекту через простую конфигурацию.
Внимание: Если вы ранее использовали NGINX или Apache
По умолчанию, ServBay использует Caddy в качестве веб-сервера. Для тех, кто мигрирует с NGINX и Apache на ServBay, есть несколько ключевых изменений, на которые стоит обратить внимание:
Конфигурация Caddy
ServBay предустановлен с Caddy, и его конфигурация по умолчанию уже оптимизирована и отлажена. Разработчикам достаточно использовать функции "хостов" ServBay для управления сайтами без необходимости вручную изменять конфигурационные файлы Caddy.
Правила Rewrite и .htaccess
В NGINX и Apache разработчикам часто приходилось самостоятельно писать правила Rewrite и файлы .htaccess для обработки перенаправлений URL и других конфигураций. Однако в случае с ServBay, правила Caddy уже настроены, поэтому разработчикам не нужно писать эти правила, если только нет особых требований.
Узнать больше
Более подробную информацию читайте в Rewrite и htaccess, Как мигрировать сайт Apache на ServBay, Как мигрировать сайт NGINX на ServBay.
Создание проекта Slim
TIP
ServBay рекомендует размещать сайты в каталоге /Applications/ServBay/www
для удобства управления.
Установите Composer
ServBay поставляется с предустановленным Composer, поэтому отдельная установка не требуется.
Создание проекта Slim
Используйте Composer для создания нового проекта Slim:
bashcd /Applications/ServBay/www mkdir servbay-slim-app cd servbay-slim-app composer require slim/slim "^4.0" composer require slim/psr7 -W
1
2
3
4
5Переход в каталог проекта
Перейдите в каталог созданного проекта Slim:
bashcd /Applications/ServBay/www/servbay-slim-app
1
Инициализация конфигурации
Создание входного файла
Создайте файл
public/index.php
в корневом каталоге проекта и добавьте следующий код:php<?php require __DIR__ . '/../vendor/autoload.php'; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\Factory\AppFactory; $app = AppFactory::create(); $app->get('/', function (Request $request, Response $response, $args) { $response->getBody()->write("Hello ServBay!"); return $response; }); $app->run();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Настройка веб-сервера
Используйте функцию "хостов" ServBay для доступа к проекту Slim через веб-сервер. В настройках "хостов" ServBay добавьте новый хост:
- Имя:
My First Slim Dev Site
- Домен:
servbay-slim-test.local
- Тип сайта:
PHP
- Версия PHP: выберите
8.3
- Корневой каталог сайта:
/Applications/ServBay/www/servbay-slim-app/public
Подробные инструкции по настройке смотрите в разделе Добавление первого сайта.
Добавление примера кода
В файл public/index.php
добавьте следующий код для вывода "Hello ServBay!":
$app->get('/', function (Request $request, Response $response, $args) {
$response->getBody()->write("Hello ServBay!");
return $response;
});
2
3
4
Доступ к сайту
Откройте браузер и перейдите по адресу https://servbay-slim-test.local
, вы увидите вывод Hello ServBay!
.
Пример NoSQL базы данных
Пример Memcached
Установка расширения Memcached
В ServBay, расширение Memcached уже предустановлено, дополнительная установка не требуется.
Настройка Memcached
Добавьте зависимости Memcached в файл
composer.json
:json{ "require": { "slim/slim": "^4.0", "memcached/memcached": "^3.1" } }
1
2
3
4
5
6Затем выполните
composer update
для установки зависимостей.Настройка маршрутизации
В файле
public/index.php
добавьте следующий код:php$app->get('/memcached', function (Request $request, Response $response, $args) { $memcached = new Memcached(); $memcached->addServer('127.0.0.1', 11211); $cacheKey = 'my_cache_key'; $cachedData = $memcached->get($cacheKey); if ($cachedData === false) { $cachedData = 'Hello Memcached!'; $memcached->set($cacheKey, $cachedData); } $response->getBody()->write($cachedData); return $response; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Использование Memcached
Откройте браузер и перейдите по адресу
https://servbay-slim-test.local/memcached
Пример Redis
Установка расширения Redis
В ServBay, расширение Redis уже предустановлено, дополнительная установка не требуется.
Настройка Redis
Добавьте зависимости Redis в
composer.json
:json{ "require": { "slim/slim": "^4.0", "predis/predis": "^1.1" } }
1
2
3
4
5
6Затем выполните
composer update
для установки зависимостей.Настройка маршрутизации
В файле
public/index.php
добавьте следующий код:php$app->get('/redis', function (Request $request, Response $response, $args) { $redis = new Predis\Client([ 'scheme' => 'tcp', 'host' => '127.0.0.1', 'port' => 6379, ]); $cacheKey = 'my_cache_key'; $cachedData = $redis->get($cacheKey); if ($cachedData === null) { $cachedData = 'Hello Redis!'; $redis->set($cacheKey, $cachedData); } $response->getBody()->write($cachedData); return $response; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Использование Redis
Откройте браузер и перейдите по адресу
https://servbay-slim-test.local/redis
Пример реляционной базы данных
Создание структуры базы данных и миграционных файлов
Создание миграционного файла
Используйте Phinx для создания миграционного файла:
bashcomposer require robmorgan/phinx vendor/bin/phinx init
1
2Редактирование миграционного файла
Создайте новый миграционный файл в каталоге
db/migrations
и отредактируйте его для определения структуры таблицы базы данных:phpuse Phinx\Migration\AbstractMigration; class CreateUsersTable extends AbstractMigration { public function change() { $table = $this->table('users'); $table->addColumn('name', 'string') ->addColumn('email', 'string', ['unique' => true]) ->create(); } }
1
2
3
4
5
6
7
8
9
10
11
12Запуск миграции
Используйте команду Phinx для выполнения миграции и создания таблицы базы данных:
bashvendor/bin/phinx migrate
1
Пример MySQL
Настройка MySQL
Добавьте зависимости MySQL в
composer.json
:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6Затем выполните
composer update
для установки зависимостей.Настройка маршрутизации
В файле
public/index.php
добавьте следующий код:phpuse Illuminate\Database\Capsule\Manager as Capsule; $capsule = new Capsule; $capsule->addConnection([ 'driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'servbay_slim_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]); $capsule->setAsGlobal(); $capsule->bootEloquent(); $app->get('/mysql-add', function (Request $request, Response $response, $args) { $user = Capsule::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]' ]); $response->getBody()->write('User added'); return $response; }); $app->get('/mysql', function (Request $request, Response $response, $args) { $users = Capsule::table('users')->get(); $response->getBody()->write($users->toJson()); return $response; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32Запись данных пользователя
Откройте браузер и перейдите по адресу
https://servbay-slim-test.local/mysql-add
иhttps://servbay-slim-test.local/mysql
Пример PostgreSQL
Настройка PostgreSQL
Добавьте зависимости PostgreSQL в
composer.json
:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6Затем выполните
composer update
для установки зависимостей.Настройка маршрутизации
В файле
public/index.php
добавьте следующий код:phpuse Illuminate\Database\Capsule\Manager as Capsule; $capsule = new Capsule; $capsule->addConnection([ 'driver' => 'pgsql', 'host' => '127.0.0.1', 'database' => 'servbay_slim_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', ]); $capsule->setAsGlobal(); $capsule->bootEloquent(); $app->get('/pgsql-add', function (Request $request, Response $response, $args) { $user = Capsule::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]' ]); $response->getBody()->write('User added'); return $response; }); $app->get('/pgsql', function (Request $request, Response $response, $args) { $users = Capsule::table('users')->get(); $response->getBody()->write($users->toJson()); return $response; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32Запись данных пользователя
Откройте браузер и перейдите по адресу
https://servbay-slim-test.local/pgsql-add
иhttps://servbay-slim-test.local/pgsql
Следуя этим шагам, вы успешно создали и запустили проект Slim, а также использовали функции, предоставленные ServBay, для управления и доступа к вашему проекту, одновременно подключившись к различным базам данных.