Back-End

7 jul, 2015

URLs amigáveis sem .htaccess usando Slim

Publicidade

Você já sofreu criando regras malucas no seu .htaccess pra conseguir criar suas URLs amigáveis? Conhece pouco sobre expressões regulares e sempre apanha das regras de reescrita? Já imaginou criar URLs amigáveis sem essas dores de cabeça, tudo em PHP puro, sem .htaccess e de forma clara e objetiva? E o melhor: em poucos segundos!

Há uma maneira muito simples de fazer isso. E a solução se chama Slim. Continue lendo que você vai ver como que criar URLs amigáveis pode ser uma tarefa ridiculamente simples e rápida.

 

O que é o Slim

O Slim é um micro-framework, ou seja, um conjunto pequeno (porém poderoso) de ferramentas para desenvolver aplicações.

Ele permite fazer diversas outras coisas, além de criar URLs amigáveis (também chamadas de rotas). Dentre os principais recursos do Slim estão:

  • Rotas (URLs amigáveis)
  • Gerenciamento de requisições HTTP
  • Gerenciamento de sessões
  • Cache
  • Criptografia

O Slim é bem completo e faz várias coisas, porém hoje vou mostrar apenas a parte de rotas.

Se vocês gostarem da ferramenta e comentarem no artigo, farei outros mostrando mais recursos do Slim.

URLs amigáveis usando o Slim

Que tal um desafio? Vamos criar uma aplicação com URLs amigáveis do zero em apenas poucos segundos? Parece loucura? Impossível? Não é! Vou mostrar como é simples.

Para criarmos nosso projeto, vamos usar o Composer. Com ele instalado, abra o terminal (prompt de comando, pra quem sofre usando Windows) e digite:

composer require slim/slim

O Composer vai baixar o Slim, além do seu próprio autoloader, que utilizaremos para carregar o Slim em nossa aplicação.

Agora você verá esta estrutura de arquivos:

├── composer.json
├── composer.lock
└── vendor
    ├── autoload.php
    ├── composer
    └── slim

Só precisamos criar nosso arquivo index.php. Crie-o com este conteúdo:

<?php
require 'vendor/autoload.php';
 
$app = new \Slim\Slim();
 
$app->get('/', function ()
{
    echo "Página inicial";
});
 
$app->get('/contato', function ()
{
    echo "Fale conosco";
});
 
$app->run();

Pronto!

Agora basta iniciar o servidor do PHP:

php -S localhost:8000

Agora acesse as URLs abaixo:

  • http://localhost:8000/
  • http://localhost:8000/contato

Seu projeto com URLs amigáveis já está funcionando. Falei que seriam apenas alguns segundos!

Parâmetros de URL

Provavelmente você ainda não está satisfeito(a), né? Aí você me diz “E se eu quiser passar parâmetros dinâmicos na URL?”. É tão simples quanto!

Vamos imaginar que temos um sistema de artigos e que precisamos permitir a exibição de artigos pelo seu ID. Por exemplo, para exibir o artigo de ID 7, usaremos a URL localhost:8000/artigos/7. Nesse caso, o número 7 é a parte dinâmica da URL.

Para montar essa rota, vamos adicionar esta regra ao nosso arquivo index.php:

$app->get('/artigos/:id', function ( $id )
{
    printf( "Exibindo artigo %d", $id );
});

Veja que a rota é artigos/:id. O dois-pontos antes do id diz que esse valor é um parâmetro, que será passado como parâmetro para a função que manipula essa rota.

Outros métodos HTTP

Nos exemplos anteriores, usamos apenas o método GET para as rotas. Mas também é possível usar os outros métodos HTTP, como POST, PUT, DELETE e outros. Basta trocar o nome do método ao definir a rota:

$app->post('/enviar', function ()
{
    echo "método post";
});
 
$app->put('/alterar', function ()
{
    echo "método put";
});
 
$app->delete('/remover', function ()
{
    echo "método delete";
});

Logicamente, também é possível usar parâmetros nessas rotas.

Só um pouco de .htaccess

Eu falei que não usaríamos .htaccess para criar as URLs amigáveis, certo? E realmente não usamos. Mas pode ser necessário criar o .htaccess para que todas as requisições seja encaminhadas para o arquivo index.php. Isso garante que suas rotas funcionem adequadamente em qualquer servidor web.

Vamos criar o .htaccess com este conteúdo:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

Apenas dizemos para encaminhar as requisições sempre para nosso index.php.

Conclusão

Em apenas alguns segundos, usando o Slim e o Composer, conseguimos criar um sistema de rotas bem completo e fácil de manter.

Esse é só um dos inúmeros e excelentes recursos do Slim. Veja algumas outras facilidades que ele possui:

  • Criação de Rotas (URLs amigáveis): mostrei o básico aqui, mas há diversos outros recursos mais avançados;
  • Rotas nomeadas, para facilitar a criação de links e navegação em seu sistema;
  • Grupos de rotas, permitindo diversos métodos HTTP para a mesma rota;
  • Middlewares, para garantir a segurança e impedir acesso indevido por usuários não logados;
  • Gerenciamento de requisições HTTP, para desenvolver clientes de web service com facilidade;
  • Gerenciamento de sessões, para facilitar o desenvolvimento de sistemas de login;
  • Cache, para acelerar o carregamento de sua aplicação;
  • Criptografia, para garantir total segurança para os dados de seus usuários.

Estou desenvolvendo um curso completo sobre o Slim. Se você tiver interesse em ter acesso a esse curso antes do lançamento oficial, deixe seu e-mail abaixo, que vou lhe enviar mais detalhes sobre o curso, com preço especial, antes de divulgá-lo publicamente.