profmugomes / miphantroute
Biblioteca para trabalhar com rotas de uma forma mais fácil.
Fund package maintenance!
Requires
None
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
MiPhantRoute é uma biblioteca leve, minimalista e funcional em PHP para roteamento baseado em URL com suporte nativo a Expressões Regulares (Regex).
Ela foi criada para quem deseja controle total, zero dependências e nenhuma abstração excessiva, sendo ideal para todo tipo de projeto.
✨ Características
- Roteamento por URL com Regex
- Captura de parâmetros diretamente via regex
- Paradigma funcional (callbacks)
- Suporte a PHP 8.4+
- Compatível com servidor embutido
- Extração de partes da URL
- Tratamento simples de 404
- Zero dependências
- Código pequeno, legível e previsível
📦 Instalação
Via Composer
composer require profmugomes/miphantroute
Manual
Copie o arquivo MiPhantRoute.php para seu projeto e faça a inclusão via autoloader ou require.
🚀 Uso básico
Adicione a configuração pcre.jit ao php.ini ou faça a configuração diretamente do seu arquivo PHP, para desativar o JIT (Just-In-Time) do PCRE, evitando problemas relacionados à alocação de memória durante a execução de expressões regulares.
ini_set('pcre.jit', 0);
Agora, para trabalhar com o MiPhantRoute, siga as instruções abaixo:
use MiPhantRoute\MiPhantRoute; $route = new MiPhantRoute(); $route->getPart('/', function () { echo 'Página inicial'; }); $route->getPart('/contato', function () { echo 'Página de contato'; }); $route->getError(function () { http_response_code(404); echo '404 - Página não encontrada'; });
🌐 Funcionamento da URL
Para uma URL como:
/blog/post/123
A biblioteca gera internamente:
[ '/blog/post/123', ['blog', 'post', '123'] ]
🧠 Roteamento com Regex
O método getPart() aceita expressões regulares completas, permitindo capturar parâmetros da URL automaticamente.
Exemplo simples
$route->getPart('/blog', function () { echo 'Página do blog'; });
📌 Captura de parâmetros
$route->getPart('/blog/post/([0-9]+)', function ($id) { echo "Post ID: {$id}"; });
URL acessada:
/blog/post/42
Resultado:
Post ID: 42
📌 Múltiplos parâmetros
$route->getPart('/user/([a-z]+)/([0-9]+)', function ($username, $id) { echo "Usuário: {$username} | ID: {$id}"; });
URL:
/user/joao/10
📖 Métodos auxiliares
getArrayURLs(): array
$route->getArrayURLs(); // ['blog', 'post', '123']
getFullURL(): string
$route->getFullURL(); // blog/post/123
getURL(int $index): string
$route->getURL(0); // blog $route->getURL(1); // post $route->getURL(2); // 123
getFirstURL(): string
$route->getFirstURL(); // blog
getPenultimateURL(): string
$route->getPenultimateURL(); // post
getLastURL(): string
$route->getLastURL(); // 123
❌ Tratamento de erro 404
Se nenhuma rota corresponder, o callback definido em getError() será executado:
$route->getError(function () { http_response_code(404); echo 'Página não encontrada'; });
👤 Autor
Murilo Gomes
🔗 https://www.profmugomes.com.br
📺 https://youtube.com/@profmugomes
🤝 Support
- GitHub Sponsors: https://github.com/sponsors/profmugomes
License
Copyright (c) 2025-2026 Murilo Gomes <profmugomes.com.br>. All Rights Reserved.
This project is licensed under the PolyForm Perimeter License 1.0.1.
Summary
This software is available for commercial and noncommercial use, subject to the terms of the PolyForm Perimeter License 1.0.1.
You may:
- ✔ Use the software for commercial and noncommercial purposes.
- ✔ Inspect and study the source code.
- ✔ Modify the software.
- ✔ Create derivative works based on the software.
- ✔ Redistribute the software and permitted modifications.
You may not:
- ✖ Provide a product that competes with the software.
See the full license terms at LICENSE.md.
This summary is provided for convenience only and does not replace or modify the full license terms.