Search by

profmugomes / miphantroute

profmugomes

Biblioteca para trabalhar com rotas de uma forma mais fácil.

Package info

github.com/profmugomes/miphantroute

pkg:composer/profmugomes/miphantroute

Fund package maintenance!

profmugomes

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

4.0.0 2026-09-27 20:36 UTC

This package is auto-updated.

Last update: 2026-09-27 20:41:57 UTC


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

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.