URLs Amigáveis Sem htaccess Usando Slim

URLs Amigáveis Sem .htaccess Usando Slim

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, 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 criar URLs Amigáveis pode ser uma tarefa ridiculamente simples e rápida.

Hoje eu quero solucionar um GRANDE problema:

Criar URLs Amigáveis Sem .htaccess

Isso é possível, sim. E o melhor: é extremamente simples!

Vamos usar um pequeno framework, chamado Slim.

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, não apenas 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 aqui no post, farei outros artigos 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.

Lembrando que o Composer fica instalado na sua máquina local. Você pode instalá-lo no seu servidor, mas não precisa. Você usará o Composer em sua máquina para baixar o Slim. Depois basta fazer upload de tudo para o servidor (mesmo que o Composer não esteja instalado lá, tudo vai funcionar).

Com o Composer 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';
 
/* =================
   Instanciando o Slim
   Escolha uma das opções abaixo. 
   A primeira não exibe os erros, ideal para ambiente de produção
   A segunda exibe erros, ideal para debug em ambiente de desenvolvimento
   ================ */
 
// Esta linha instancia o Slim, sem habilitar os erros
$app = new \Slim\App();
 
// Estas linhas instanciam o Slim, habilitando os erros (útil para debug, em desenvolvimento)
$app = new \Slim\App([
    'settings' => [
        'displayErrorDetails' => true
    ]
]);
 
 
/* ============
   Rotas da aplicação
   ============ */
 
 
$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 ( $request )
{
    $id = $request->getAttribute('route')->getArgument('id');
    printf( "Exibindo artigo %d", $id );
});

Veja que a rota é artigos/{id}. As chaves entre o 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 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;

 

The following two tabs change content below.
Graduado em Ciência da Computação, pela Universidade Federal do Paraná (UFPR), é desenvolvedor de software desde 2008, com foco em Desenvolvimento Web com PHP.