$ composer require troublete/monty
<?php
require_once ' path/to/vendor/autoload.php ' ;
$ application = new Monty Application ();
$ application -> get (
' /request[/{someId}] ' ,
function ( Monty Request $ req , Monty Response $ res , $ someId ) {
// do some awesome stuff
return new Symfony Component HttpFoundation JsonResponse ([]);
}
); A análise de rota é baseada no pacote Fastroute criado, seja @nikic; portanto, na maioria das vezes, deve ser possível definir rotas, conforme especificado pelo Fastoute. A correspondência de rota é feita via PCRE com o Delimiter definido como @ , portanto, esteja ciente ao definir o parâmetro REGEX definido pelo usuário corresponde a @ . As definições de rota permitem peças variáveis no final de uma definição marcada com [] . Como isso é possível, a correspondência tentará múltiplas expressões regulares em ordem de complexidade descendente e retornará na primeira partida do padrão.
Roteamento válido
/search/{searchId} => routing with parameter
/search/{searchId:d+} => routing with parameter with defined regex
/search[/{searchId}] => routing with optional parameter
/search/index[es] => routing with optional part
Roteamento inválido
/search/index[es]/{searchId} => optional chunk in the middle
As definições de manuseio serão processadas em ordem de registro assim que se corresponder com a solicitação recebida que ela despachará, retornará e, portanto, fechar o processo.
Além disso, Monty foi projetado para ser solicitado e centrado na resposta, após o dogma que uma solicitação a um aplicativo será tratada uma vez, para que tudo o necessário durante o ciclo de vida seja incluído (ou deve ser anexado) no objeto Solicitação ou resposta.
Os manipuladores de uma definição são uma variedade de callable e serão executados de maneira síncrona para correspondência de definição. Middlewares registrados para executar antes ou depois são integrados nesta "pilha de chamadas".
Se um objeto de resposta for retornado em um manipulador, ele será interpretado como a resposta do processo e não poderá ser redefinido (mas modificado).
O aplicativo é o principal componente de Monty. Ele lidará com o registro de manipuladores de rotas, middlewares e configuração adicional de solicitação e resposta. Geralmente contém quatro casos de uso diferentes. Acessando o objeto de solicitação ou resposta do processo de solicitação atual, registrando os manipuladores de rotas e registrando warwares médios que serão executados durante o ciclo de vida.
Além dos métodos de uso de uso, ele também contém uma interface dos métodos de alias para tornar o código que você escreve muito mais compreensível e elegante.
Este método registra novos manipuladores de solicitação para uma rota específica em relação a uma coleção de métodos de solicitação nos quais devem ser despachados.
| Argumento | Tipo | Descrição |
|---|---|---|
| $ métodos | corda[] | Coleção de métodos de solicitação na maçaneta. |
| $ rota | corda | A rota na qual os manipuladores estão registrados. |
| ... $ manipuladores | Callable [] | Coleção de manipuladores que serão executados. |
// ...
$ app -> handle (
[ ' GET ' ],
' /index ' ,
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ }
// ...
);
// ... | Método | Descrição |
|---|---|
| All ($ Route, ... $ Handlers) | Método de alias que reagirá a todos os métodos de solicitação |
| Get ($ Route, ... $ Handlers) | Método de alias que reagirá para obter solicitações |
| Post ($ Route, ... $ Handlers) | Método de alias que reagirá às solicitações de postar |
| Cabeça ($ Route, ... $ Handlers) | Método de alias que reagirá às solicitações de cabeça |
| Opções ($ rota, ... $ manipuladores) | Método de alias que reagirá às solicitações de opções |
| Patch ($ Route, ... $ Handlers) | Método de alias que reagirá às solicitações de patch |
| put ($ rota, ... $ manipuladores) | Método de alias que reagirá para colocar solicitações |
| excluir ($ rota, ... $ manipuladores) | Método de alias que reagirá para excluir solicitações |
Este método registra manipuladores adicionais que serão executados sem levar em consideração o método de solicitação.
| Argumento | Tipo | Descrição |
|---|---|---|
| $ colocando | Inteiro | A posição do ciclo de vida da solicitação (Application :: Apresença - Antes, Application :: Append - After) Quando os manipuladores devem ser executados. |
| ... $ manipuladores | Callable [] | Coleção de manipuladores que serão executados. |
// ...
$ app -> middleware (
Monty Application:: PREPEND ,
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ }
// ...
);
// ... | Método | Descrição |
|---|---|
| antes (... $ manipuladores) | Método de alias que adicionará os manipuladores de solicitação executados antes do manuseio de solicitação real |
| Depois (... $ Manipuladores) | Método Alias, que adicionará os manipuladores de solicitação executados após o manuseio real de solicitação |
Este método recupera o objeto de solicitação atual.
Este método recupera o objeto de resposta atual.
O objeto de solicitação é a parte central do processo. Ele contém a possibilidade de anexar propriedades e serviços necessários durante a solicitação. Com esse manuseio, o objeto de solicitação permanece pequeno e somente as dependências necessárias são registradas quando necessário.
Método para recuperar o IP da solicitação.
Método para recuperar o valor do cabeçalho do tipo conteúdo solicitado.
Método para recuperar os parâmetros $ _Files.
Este método pode ser usado para recuperar uma propriedade ou serviço definido para a solicitação.
| Argumento | Tipo | Descrição |
|---|---|---|
| ... $ parâmetros | misturado | A coleta de parâmetros passou um longo para o método do setter. |
// ...
$ request -> get ( ' logger ' , new SomeDefault ());
$ request -> get ( ' property ' , ' some default value ' );
// ... Método para recuperar a solicitação bruta incorporada no objeto monty request.
Método para recuperar o host HTTP, incluindo protocolo.
Método para verificar se o método de solicitação é um valor específico.
| Argumento | Tipo | Descrição |
|---|---|---|
| $ método | corda | Método de solicitação para verificar. |
Método para verificar se a solicitação enviada é segura (HTTPS/SSL).
Método para recuperar o caminho de solicitação.
Método para recuperar o valor de retorno do manipulador anterior na pilha.
Método para recuperar os parâmetros $ _GET.
Método para recuperar o método de solicitação.
Método para recuperar os parâmetros $ _Post.
Método para recuperar os valores dos parâmetros de rota correspondem pela instância do manipulador de rota.
Este método pode ser usado para adicionar uma instância ou propriedade de classe à solicitação que pode ser acessada ao longo da pilha de chamadas. Normalmente, o método leva pelo menos dois parâmetros, primeiro o ID da propriedade/serviço como string e, em segundo lugar, um valor escalar ou objeto.
As matrizes não podem ser definidas como propriedades de solicitação para evitar o código confuso e o volume de recursos.
| Argumento | Tipo | Descrição |
|---|---|---|
| ... $ parâmetros | misturado | A coleta de parâmetros passou um longo para o método do setter. |
// ...
$ request -> set ( ' logger ' , new SomeLogger ()); // valid
$ request -> set ( ' property ' , ' some value ' ); // valid
$ request -> set ( ' not_possible ' , []); // invalid
// ... Método para definir o retorno do manipulador anterior.
| Argumento | Tipo | Descrição |
|---|---|---|
| $ valor | misturado | Valor de retorno do manipulador anterior. |
Método para atualizar os parâmetros de rota definidos para a solicitação.
| Argumento | Tipo | Descrição |
|---|---|---|
| $ params | variedade | Rota parâmetros a serem definidos. |
Presume -se que o objeto de resposta se resolva - o que significa que deve lidar com a forma como a resposta definida deve ser renderizada na resposta do aplicativo. Você pode usar simplesmente o objeto Symfony HTTP Component Response ou definir os próprios, que precisam implementar o Monty ResponseInterface.
Um manipulador é definido como um callable que é registrado em uma definição de manipulador de rota ou middleware.
O manipulador pode ser, funções simples de lambda, objetos de fechamento, aulas, ... praticamente qualquer coisa que seja possível ser invocada. Sem limitações aqui.
© 2017 Willi Eßer