89bsilva/my-route
Composer 安装命令:
composer require 89bsilva/my-route
包简介
Para controle simples de rotas
README 文档
README
MyRoute é uma ferramenta desenvolvida em PHP para realizar um controle muito simples de rotas
Instalação
$ composer require 89bsilva/my-route
Primeiro Passo
Importar o autoload do composer
<?php require './vendor/autoload.php';
Criando o obejto MyRoute
Ao instânciar a classe será criado o arquivo .htaccess com as configurações de reescrita de url para o arquivo index.php que deverá ser criado manualmente. Obs.: Caso o arquivo .htaccess já exista não será criado e para que o MyRoute funcione é necessário a reescrita de url para o arquivo de entrada com o valor da reescrita em $_GET['MyRouteURL']
<?php $routes = new MyRoute();
Criando as Rotas
O MyRoute aceita e controla os tipos de requisições: GET, POST, PUT, DELETE e OPTIONS.
Para criar as rotas são disponibilizado os seguintes métodos:
<?php #Método Utilizado para criar uma rota que responde a todos os tipos de requisições all(string $url, string $pageFilePath) #Método Utilizado para criar uma rota que responde a requisições do tipo GET get(string $url, string $pageFilePath) #Método Utilizado para criar uma rota que responde a requisições do tipo POST post(string $url, string $pageFilePath) #Método Utilizado para criar uma rota que responde a requisições do tipo PUT put(string $url, string $pageFilePath) #Método Utilizado para criar uma rota que responde a requisições do tipo DELETE delete(string $url, string $pageFilePath) #Método Utilizado para criar uma rota que responde a requisições do tipo OPTIONS options(string $url, string $pageFilePath) #Método Utilizado para criar uma rota que responde a requisições dos tipos passados em $to to(array $to, string $url, string $pageFilePath) #Método Utilizado para proteger uma rota já criada com uma das chamadas acima guard(string $route, string $filePath)
Para criar é necessário informar no parâmetro "$url" o endereço da rota que deseja criar e no parâmetro "$pageFilePath" o endereço do arquivo que será incluido para lidar com a requisição Obs.: O MyRoute leva em consideração como endereço base para fazer o include o nível anterior da pasta vendor do composer. As rotas seguem a ordem em que foram criadas, o MyRoute devolve a primeira rota que os critérios foram atendidos.
Exemplo:
- Criar as rotas:
- /, controlada pelo arquivo: home.html, quando o tipo de requisição for: "GET"
- /contato, controlada pelo arquivo: contato.html, quando o tipo de requisição for: "GET"
- /contato/salvar, controlada pelo arquivo: salvar.php, quando o tipo de requisição for: "POST" ou "PUT"
<?php $routes->get('/', 'home.html'); $routes->get('/contato', 'contato.html'); $routes->to(array('POST', 'PUT'), '/contato/salvar', 'salvar.php');
É possível utilizar uma classe e um método para controlar uma rota, para isso será necessário colocar ":" logo após a extensão do arquivo e o nome da classe que será instanciada depois colocar "=" e o método que deverá ser chamado Obs.: Para funcionar o nome da classe e o do método dever ser informado igualmente está no arquivo.
Exemplo:
- Criar as rotas:
- /, controlada pela classe: "MeuSite", metodo: "home" no arquivo: site.php, quando o tipo de requisição for: "GET"
- /contato, controlada pela classe: "MeuSite", metodo: "contato" no arquivo: site.php, quando o tipo de requisição for: "GET"
- /contato/salvar, controlada pela classe: "MeuSite", metodo: "salvar" no arquivo: site.php, quando o tipo de requisição for: "POST"
<?php $routes->get('/', 'site.php:MeuSite=home'); $routes->get('/contato', 'site.php:MeuSite=contato'); $routes->post('/contato/salvar', 'site.php:MeuSite=salvar');
É possível receber valores pela url, para isso será necessário colocar ":" no inicio da identificação da rota, assim o que seria o endereço será o nome da variável disponível na inclusão do arquivo. Obs.: Se for passado um nome de classe e método a variável será passada como argumento na chamada do método.
Exemplo:
- Criar as rotas:
- /api-class/user/id onde id será variável, controlada pela classe: "Api", metodo: "read" no arquivo: api-class.php, quando o tipo de requisição for: "GET"
- /api/user/id onde id será variável, controlada pelo arquivo: api.php, quando o tipo de requisição for: "GET"
<?php #Será criado a váriavel $id e estará disponível para o arquivo api.php $routes->get('/api/user/:id', 'api.php'); #Será chamado o método read de Api e passado $id como argumento da chamada. Api->read($id) $routes->get('/api-class/user/:id', 'api-class.php:Api=read');
Também é possível criar uma rota não exata, para isto para colocar "?" como rota que a partir daí a rota aceitará qualquer caminho. Obs.: Será disponibilizado uma variável (ou passado como argumento da chamada do método) $remaining com um array onde cada elemento será uma parte da rota após o sinal de ?.
Exemplo:
- Criar as rotas:
- /? controlada pela classe: "NotFound", metodo: "noExist" no arquivo: 404.php, para qualquer tipo de requisição
<?php /** * Se foi solicitado a rota: /a/b/c/d e não houver nenhuma configuração de rota anterior a rota abaixo * o MyRoute irá chamar o método noExist da Classe NotFound e passará o seguinte array como argumento. array('a','b','c','d') */ $routes->all('/?', '404.php:NotFound=noExist');
Protegendo Rotas
Para proteger rotas é necessário chamar o método "guard($route, $filePath)" da instância MyRoute. Antes dchamar o método "guard()" é necessário ter uma rota já criada. O parâmetro $route é a URL que se deseja guardar. O parâmetro $filePath é o endereço do arquivo que será incluido para realizar a proteção. Esse arquivo deve conter uma função/método que será chamado antes do MyRoute carregar o arquivo responsável por responder a rota. Essa função/método deve lidar com autorização e caso seja permitido entrar na rota deve ser retornado um valor TRUE, somente assim o MyRoute prosseguirá com as ações para entregar o arquivo responsável por responder a rota
Exemplo:
- Proteger a rota: /api/? utilizando o arquivo: "api.php" com uma função: "proteger"
<?php $route->guard('/api/?', 'api.php@proteger');
Exemplo:
- Proteger a rota: /api/? utilizando o arquivo: "guardas.php" com uma classe: "GuardasDeRotas" e o método: "api"
<?php $route->guard('/api/?', 'guardas.php:GuardasDeRotas=api');
Para facilitar a proteção de rotas é possível nomear as rotas, assim ao invés de passar a URL passa o nome da rota para o método guard. Para nomear uma rota deve colocar o nome que deseja entre [] no início da URL da rota. Obs.: As váriaveis de rota serão passadas na chamada da função/método
Exemplo:
- Criar a rota "/agenda/:data/gerar-pdf" nomear a rota para "gPDF", controlada pela classe: "MeuSite", metodo: "agenda" no arquivo: site.php, quando o tipo de requisição for: "GET"
- Proteger a rota: /agenda/:data/gerar-pdf utilizando o arquivo: "guardas.php" com uma classe: "GuardasDeRotas" e o método: "gerarPDF"
<?php #Criando a rota $route->get('[gPDF]/agenda/:data/gerar-pdf', 'site.php:MeuSite=agenda'); #Criando um guarda para a rota $route->guard('gPDF', 'guardas.php:GuardasDeRotas=gerarPDF');
Último Passo
Logo após terminar de criar as rotas é necessário chamar o método "activate". Após isso o MyRote estará configurado e ativo!
<?php $routes->activate();
Autor
Bruno Silva Santana - ibrunosilvas@gmail.com - https://github.com/ibrunosilvas
Licença
MyDatabase está licenciado sob a licença MIT - consulte o arquivo LICENSE para mais detalhes.
89bsilva/my-route 适用场景与选型建议
89bsilva/my-route 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 14 次下载、GitHub Stars 达 0, 最近一次更新时间为 2020 年 10 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 89bsilva/my-route 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 89bsilva/my-route 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 14
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-10-25