Criando e Executando um Projeto Slim
O que é Slim?
Slim é um framework PHP leve, projetado para construir rapidamente aplicativos web e APIs simples, mas poderosos. Ele oferece funcionalidades básicas de roteamento, manipulação de requisições e respostas, adequado para projetos que necessitam de rápido desenvolvimento e implantação.
Funcionalidades principais e vantagens do Slim
- Leveza: O framework Slim é bem pequeno, ideal para construir aplicações de pequeno e médio porte.
- Flexibilidade: Pode ser integrado com qualquer componente ou biblioteca de terceiros, oferecendo grande flexibilidade.
- Facilidade de uso: API simples e documentação clara permitem que os desenvolvedores comecem rapidamente.
- Roteamento poderoso: Suporta vários métodos HTTP e configurações de roteamento complexas.
- Suporte a Middleware: Pode facilmente adicionar middleware para tratar requisições e respostas.
Slim é uma escolha ideal para construir APIs RESTful e desenvolvimento rápido de protótipos.
Criando e Executando um Projeto Slim com ServBay
Neste artigo, utilizaremos o ambiente PHP fornecido pelo ServBay para criar e executar um projeto Slim. Usaremos o recurso 'host' do ServBay para configurar o servidor web e acessar o projeto com uma configuração simples.
Atenção: Se você costumava usar NGINX ou Apache
ServBay usa Caddy como servidor web por padrão. Para usuários que migram de NGINX e Apache para ServBay, alguns pontos-chave precisam ser notados:
Configuração do Caddy
O ServBay já vem com o Caddy integrado, e a configuração padrão está otimizada e depurada. Os desenvolvedores só precisam gerenciar os sites por meio da funcionalidade 'host' do ServBay, sem precisar modificar manualmente os arquivos de configuração do Caddy.
Regras de Rewrite e .htaccess
No NGINX e Apache, os desenvolvedores costumam escrever suas próprias regras de rewrite e arquivos .htaccess para tratar redirecionamentos de URL e outros ajustes. No entanto, o ServBay já vem configurado com as regras do Caddy, então, a menos que haja uma necessidade especial, os desenvolvedores não precisam escrever essas regras por conta própria.
Saiba mais
Para mais informações, consulte Rewrite e htaccess, Como migrar um site Apache para ServBay, Como migrar um site NGINX para ServBay.
Criando um Projeto Slim
TIP
O ServBay recomenda que os desenvolvedores coloquem os sites no diretório /Applications/ServBay/www
para facilitar a gestão.
Instalar o Composer
O ServBay já vem com o Composer, então não é necessário instalar separadamente.
Criar o Projeto Slim
Use o Composer para criar um novo projeto 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
5Entrar no diretório do projeto
Entre no diretório do novo projeto Slim:
bashcd /Applications/ServBay/www/servbay-slim-app
1
Configuração Inicial
Criar o arquivo de entrada
Crie o arquivo
public/index.php
no diretório raiz do projeto e adicione o seguinte código: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
Configuração do Servidor Web
Use a funcionalidade 'host' do ServBay para acessar o projeto Slim através do servidor web. Nas configurações de 'host' do ServBay, adicione um novo host:
- Nome:
My First Slim Dev Site
- Domínio:
servbay-slim-test.local
- Tipo de site:
PHP
- Versão PHP: escolha
8.3
- Raiz do site:
/Applications/ServBay/www/servbay-slim-app/public
Para configurações detalhadas, consulte Adicionando o primeiro site.
Adicionar Código de Exemplo
Adicione o seguinte código no arquivo public/index.php
para exibir "Hello ServBay!":
$app->get('/', function (Request $request, Response $response, $args) {
$response->getBody()->write("Hello ServBay!");
return $response;
});
2
3
4
Acessar o Site
Abra o navegador e acesse https://servbay-slim-test.local
, você verá a mensagem Hello ServBay!
.
Exemplo de Banco de Dados NoSQL
Exemplo Memcached
Instalar extensão Memcached
No ServBay, a extensão Memcached já vem pré-instalada, não necessitando de instalação adicional.
Configurar Memcached
Adicione a dependência Memcached no arquivo
composer.json
:json{ "require": { "slim/slim": "^4.0", "memcached/memcached": "^3.1" } }
1
2
3
4
5
6Em seguida, execute
composer update
para instalar a dependência.Configurar Rota
Adicione o seguinte código no arquivo
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
15Usar Memcached
Abra o navegador e acesse
https://servbay-slim-test.local/memcached
Exemplo Redis
Instalar extensão Redis
No ServBay, a extensão Redis já vem pré-instalada, não necessitando de instalação adicional.
Configurar Redis
Adicione a dependência Redis no arquivo
composer.json
:json{ "require": { "slim/slim": "^4.0", "predis/predis": "^1.1" } }
1
2
3
4
5
6Em seguida, execute
composer update
para instalar a dependência.Configurar Rota
Adicione o seguinte código no arquivo
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
18Usar Redis
Abra o navegador e acesse
https://servbay-slim-test.local/redis
Exemplos de Banco de Dados Relacionais
Criar Estrutura de Banco de Dados e Arquivo de Migração
Criar arquivo de migração
Use o Phinx para criar um arquivo de migração:
bashcomposer require robmorgan/phinx vendor/bin/phinx init
1
2Editar o arquivo de migração
No diretório
db/migrations
, crie um novo arquivo de migração e edite-o para definir a estrutura da tabela de banco de dados: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
12Executar migração
Use o comando Phinx para executar a migração e criar a tabela do banco de dados:
bashvendor/bin/phinx migrate
1
Exemplo MySQL
Configurar MySQL
Adicione a dependência MySQL no arquivo
composer.json
:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6Em seguida, execute
composer update
para instalar a dependência.Configurar Rota
Adicione o seguinte código no arquivo
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
32Adicionar um usuário
Abra o navegador e acesse
https://servbay-slim-test.local/mysql-add
ehttps://servbay-slim-test.local/mysql
Exemplo PostgreSQL
Configurar PostgreSQL
Adicione a dependência PostgreSQL no arquivo
composer.json
:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6Em seguida, execute
composer update
para instalar a dependência.Configurar Rota
Adicione o seguinte código no arquivo
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
32Adicionar um usuário
Abra o navegador e acesse
https://servbay-slim-test.local/pgsql-add
ehttps://servbay-slim-test.local/pgsql
Seguindo os passos acima, você criou e executou com sucesso um projeto Slim, usando as funcionalidades fornecidas pelo ServBay para gerenciar e acessar seu projeto, ao mesmo tempo em que conectou diferentes bancos de dados e realizou operações de chamadas de dados.