$ 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 ([]);
}
); El análisis de la ruta se basa en el paquete Fastroute creado como @nikic, por lo que en su mayor parte debería ser posible definir las rutas según lo especificado por Fastroute. La coincidencia de ruta se realiza a través de PCRE con Delimiter establecido en @ , así que tenga en cuenta al establecer coincidencias de parámetros REGEX definidos por el usuario con @ . Las definiciones de ruta permiten piezas variables al final de una definición marcada con [] . Dado que esto es posible, la coincidencia intenta múltiples expresiones regulares en orden de complejidad descendiente y volverá a la primera coincidencia de patrón.
Enrutamiento 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
Enrutamiento no válido
/search/index[es]/{searchId} => optional chunk in the middle
Las definiciones de manejo se procesarán en orden de registro tan pronto como se coincida con la solicitud recibida que despachará, devolverá y, por lo tanto, cierre el proceso.
Además, Monty está diseñado para estar centrado en la solicitud y la respuesta, luego del dogma de que una solicitud a una aplicación se manejará una vez para que todo lo necesario durante el ciclo de vida se incluya (o debe agregarse) en el objeto de solicitud o respuesta.
Los manejadores en una definición son una variedad de callable y se ejecutarán sincrónicamente en orden de coincidencia de definición. MiddleWares registrados para ejecutarse antes o después se integran en esta "pila de llamadas".
Si se devuelve un objeto de respuesta en un controlador, se interpreta como la respuesta del proceso y no se puede restablecer (pero modificado).
La aplicación es el componente principal de Monty. Manejará el registro de los manejadores de ruta, los centros medios y la configuración adicional de solicitud y respuesta. Generalmente contiene cuatro casos de uso diferentes. Acceder al objeto de solicitud o respuesta del proceso de solicitud actual, registrar manejadores de ruta y registrar los artículos intermedios que se ejecutarán durante el ciclo de vida.
Además de los métodos de casos de uso, también contiene una interfaz de métodos de alias para que el código escriba mucho más comprensible y elegante.
Este método registra nuevos manejadores de solicitud para una ruta específica con respecto a una colección de métodos de solicitud en los que deben enviarse.
| Argumento | Tipo | Descripción |
|---|---|---|
| $ Métodos | cadena[] | Colección de métodos de solicitud en mayúsculas. |
| $ ruta | cadena | La ruta a la que están registrados los manejadores. |
| ... $ manejadores | llamable [] | Colección de manejadores que se ejecutarán. |
// ...
$ app -> handle (
[ ' GET ' ],
' /index ' ,
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ }
// ...
);
// ... | Método | Descripción |
|---|---|
| Todos ($ ruta, ... $ manejadores) | Método de alias que reaccionará a todos los métodos de solicitud |
| Obtener ($ ruta, ... $ manejadores) | Método de alias que reaccionará para obtener solicitudes |
| Post ($ ruta, ... $ manejadores) | Método de alias que reaccionará a las solicitudes postales |
| cabeza ($ ruta, ... $ manejadores) | Método de alias que reaccionará a las solicitudes de la cabeza |
| Opciones ($ ruta, ... $ manejadores) | Método de alias que reaccionará a las solicitudes de opciones |
| Patch ($ ruta, ... $ manejadores) | Método de alias que reaccionará a las solicitudes de parche |
| poner ($ ruta, ... $ manejadores) | Método de alias que reaccionará a las solicitudes |
| Eliminar ($ ruta, ... $ manejadores) | Método de alias que reaccionará a las solicitudes de eliminación |
Este método registra manejadores adicionales que se ejecutarán sin tener en cuenta el método de solicitud.
| Argumento | Tipo | Descripción |
|---|---|---|
| $ colocación | entero | La posición del ciclo de vida de la solicitud (aplicación :: prepend - antes, aplicación :: append - después) cuando se deben ejecutar los manejadores. |
| ... $ manejadores | llamable [] | Colección de manejadores que se ejecutarán. |
// ...
$ app -> middleware (
Monty Application:: PREPEND ,
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ }
// ...
);
// ... | Método | Descripción |
|---|---|
| antes (... $ manejadores) | Método de alias que agregará los manejadores de solicitud ejecutados antes del manejo de la solicitud real |
| Después (... $ manejadores) | Método de alias que agregará manejadores de solicitud ejecutados después del manejo de la solicitud real |
Este método recupera el objeto de solicitud actual.
Este método recupera el objeto de respuesta actual.
El objeto de solicitud es la pieza central del proceso. Contiene la posibilidad de agregar propiedades y servicios necesarios durante la solicitud. Con ese manejo, el objeto de solicitud se mantiene pequeño y solo se registran las dependencias necesarias cuando sea necesario.
Método para recuperar la solicitud IP.
Método para recuperar el valor de encabezado de tipo de contenido solicitado.
Método para recuperar los parámetros $ _files.
Este método se puede utilizar para recuperar una propiedad o servicio establecido en la solicitud.
| Argumento | Tipo | Descripción |
|---|---|---|
| ... $ parámetros | mezclado | La colección de parámetros pasó un largo al método Setter. |
// ...
$ request -> get ( ' logger ' , new SomeDefault ());
$ request -> get ( ' property ' , ' some default value ' );
// ... Método para recuperar la solicitud sin procesar incrustada en el objeto de solicitud Monty .
Método para recuperar el host HTTP, incluido el protocolo.
Método para verificar si el método de solicitud es un valor específico.
| Argumento | Tipo | Descripción |
|---|---|---|
| $ Método | cadena | Método de solicitud para verificar. |
Método para verificar si la solicitud enviada es segura (https/ssl).
Método para recuperar la ruta de solicitud.
Método para recuperar el valor de retorno del controlador anterior en la pila.
Método para recuperar los parámetros $ _get.
Método para recuperar el método de solicitud.
Método para recuperar los parámetros $ _post.
Método para recuperar los valores de los parámetros de ruta coinciden con la instancia del manejador de ruta.
Este método se puede usar para agregar una instancia o propiedad de clase a la solicitud a la que se puede acceder a lo largo de la pila de llamadas. Por lo general, el método toma al menos dos parámetros, primero la ID de la propiedad/servicio como cadena y, en segundo lugar, un valor escalar u objeto.
No se permite establecer matrices como propiedades de solicitud para evitar el código desordenado y el volumen de recursos.
| Argumento | Tipo | Descripción |
|---|---|---|
| ... $ parámetros | mezclado | La colección de parámetros pasó un largo al método Setter. |
// ...
$ request -> set ( ' logger ' , new SomeLogger ()); // valid
$ request -> set ( ' property ' , ' some value ' ); // valid
$ request -> set ( ' not_possible ' , []); // invalid
// ... Método para establecer la devolución del controlador anterior.
| Argumento | Tipo | Descripción |
|---|---|---|
| $ valor | mezclado | Valor de retorno del controlador anterior. |
Método para actualizar los parámetros de ruta establecidos en la solicitud.
| Argumento | Tipo | Descripción |
|---|---|---|
| $ params | formación | Los parámetros de ruta se establecerán. |
El objeto de respuesta generalmente se supone que se resuelve a sí mismo, lo que significa que debe manejar cómo la respuesta definida debe representarse en la respuesta de la aplicación. Puede usar simplemente el objeto de respuesta del componente Symfony HTTP, o definir los propios, que necesitan implementar el Monty Responseinterface.
Un controlador se define como un callable que se registra en una definición de controlador de ruta o en un middleware.
El controlador puede ser, funciones lambda simples, objetos de cierre, clases, ... prácticamente cualquier cosa que sea posible para ser invocado. No hay limitaciones aquí.
© 2017 Willi Eßer