O Slim Framework é um microframework PHP que facilita sua vida na hora de fazer pequenas APIs.
Vou falar sobre um problema que tive em um projeto em uma empresa que trabalho. Lá eu codifico com diferentes linguagens de programação em pequenos sistemas. Esses sistemas precisam ser acessados por 3 filiais e os usuários se logam com o mesmo login usado no E.R.P. que eles utilizam.
Para simplificar meu trabalho resolvi criar uma API simples para autenticar os usuários. Como eu queria usar uma estrutura REST e não queria fazer tudo na unha e nem queria colocar um framework grande como Rails, Laravel, Zend ou Django. Pesquisei sobre microframeworks PHP e cheguei ao Sinatra, que já conhecia, e o Flask (Python). Então encontrei o Slim um microframework PHP.
Eu queria trabalhar com uma estrutura REST e o Slim já faz isso de forma muito simples criando rotas, como qualquer outro framework que trabalha com REST, a diferença é que um microframework é mais leve e não precisa de tantas configurações. É uma mão na roda para quem precisa escrever uma API. Para vocês terem ideia: em um dia consegui resolver meu problema de autenticação.
Código
Agora vamos ao código! O Slim pode ser instalado via Composer ou fazendo o download do código fonte, para quem não conhece ele é um gerenciador de dependências para PHP assim como Bundler é para o Ruby, nesse post vou mostrar a instalação via composer:
Passo 1 – Instalação do composer
Leia o post (Composer para iniciantes) do Andre Cardoso. Mas basicamente, para quem tem linux, é só abrir o terminal e digitar o código abaixo, se tiver windows, é só pegar o executável no site e instalar.
Passo 2 – Criar o arquivo composer.json
Crie um diretorio para seu projeto(no meu caso eu chamei de api) e coloque um arquivo chamado composer.json dentro dela:
No arquivo composer.json adicione as seguintes linhas:
Passo 3 – Instalar as dependências
Caso você não tenha o Composer, as suas variáveis de ambiente deverão ser assim:
Passo 4 – Criação da app
Crie um arquivo index.php
e dentro dele coloque:
Se você acessar https://localhost/api/
você verá a mensagem “Hello World!”.
Mas não é isso que queremos, queremos uma API REST que retorne um JSON. Então vamos ver um exemplo bem simples. O Slim também trabalha com templates, então dentro do diretório da nossa aplicação vamos criar um diretório chamado de templates
e dentro dele criaremos um arquivo chamado default.php
, neste arquivo coloque o seguintes conteúdo:
Agora voltando ao nosso arquivo index.php
edite-o deixando da seguinte forma:
Quando você acessar a url novamente você verá algo como:
Agora vamos incrementar mais. No mesmo arquivo index.php
antes de $app->run(); adicione:
Caso você esteja acessando o sistema por subdiretório crie um arquivo chamado .htaccess
com o seguinte conteúdo:
Perceba que adicionei o método group no arquivo index.php.
O Slim trabalha também com grupos de rotas, então é possível criar vários grupos com rotas próprias, dessa forma podemos organizar o código e não ter que ficar digitando o mesmo código várias vezes. Com o grupo de rotas chamado /users tudo que tiver dentro dele deverá vir precedido de /users ex: (/users/login/, /users/update/).
Acessando https://localhost/api/users/
você verá uma lista de usuários, caso acesse https://localhost/api/users/login/
você verá uma página de erro. Isso ocorre porque setamos apenas uma rota POST para /users/login/ e como você acessou via GET o sistema redirecionou pois não existe a rota GET para /users/login/.
Daqui para frente é só continuar implementando coisas novas, criando uma classe para conectar ao banco de dados, utilizando outros verbos HTTP, novos templates e etc. Você pode criar classes e usá-las normalmente é só incluí-las com o require e instanciar o objeto;
O post termina aqui. O link para documentação do Slim é esse https://docs.slimframework.com/ divirtam-se e mãos a obra! ;D