Micromarcos de PHP con Slim | Chris Worfolk | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Micromarcos de PHP con Slim

teacher avatar Chris Worfolk

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción

      1:23

    • 2.

      ¿Qué es un microframework?

      3:45

    • 3.

      Nuestra primera aplicación

      0:18

    • 4.

      Conceptos de la ruta

      1:24

    • 5.

      Instalación de dependencias

      2:25

    • 6.

      Nuestra primera página

      2:53

    • 7.

      Cómo dirigir el proyecto

      1:10

    • 8.

      Rutas

      0:56

    • 9.

      parámetros de la ruta

      2:48

    • 10.

      Servicios

      0:28

    • 11.

      Inyección de dependencia

      2:44

    • 12.

      Instalación de un DIC

      2:07

    • 13.

      Instalación de una biblioteca de templado.

      0:59

    • 14.

      Configuración del DIC

      3:06

    • 15.

      Uso de el servicio de templado.

      1:45

    • 16.

      Crear una plantilla

      0:49

    • 17.

      Renderizar una página

      0:56

    • 18.

      Controladores

      0:32

    • 19.

      Crear un controlador

      3:10

    • 20.

      Crear las plantillas

      1:58

    • 21.

      Autoloading

      1:46

    • 22.

      Enrutar a un controlador

      1:00

    • 23.

      Prueba del controlador

      0:28

    • 24.

      Controladores abstractos

      3:38

    • 25.

      Prueba del controlador abstracto

      1:12

    • 26.

      Solicitud y respuesta

      0:30

    • 27.

      Recordes de Rocking

      0:50

    • 28.

      Crear la página de inicio

      3:40

    • 29.

      Busca con cadenas de consulta

      3:17

    • 30.

      Cómo ejecutar una búsqueda

      0:50

    • 31.

      Presentación de formas de forma

      2:04

    • 32.

      Documentos HTTP finos

      2:37

    • 33.

      Respuestas de JSON

      1:41

    • 34.

      Código de respuesta

      1:50

    • 35.

      Manejo de errores

      0:29

    • 36.

      Tienda de bicicletas

      0:41

    • 37.

      Inicio de las Bikes

      2:59

    • 38.

      Prueba de la página de inicio

      0:36

    • 39.

      Página de detalles

      3:25

    • 40.

      Filtración de los parámetros de la ruta

      1:16

    • 41.

      Agrega la manipulación de errores de error

      2:08

    • 42.

      Páginas de errores de Custom personalizadas

      2:10

    • 43.

      Controlador de excepción

      3:01

    • 44.

      Cómo disparar los errores de desactivar manualmente

      2:19

    • 45.

      Middleware

      0:35

    • 46.

      Conceptos de middleware

      1:41

    • 47.

      Zona

      0:27

    • 48.

      Páginas de acceso seguro y de acceso y acceso de acceso

      4:21

    • 49.

      middleware de sesión

      3:17

    • 50.

      Ingresar y salir

      2:14

    • 51.

      Reproducción de tu nombre de usuario

      1:24

    • 52.

      Middleware personalizado

      3:23

    • 53.

      La ruta de la middleware

      1:45

    • 54.

      Grupos de la ruta

      3:55

    • 55.

      Reflexiones finales

      0:48

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

82

Estudiantes

1

Proyectos

Acerca de esta clase

Aprende el mejor microframework: Los esquemas son versiones de recortes de los cuadros de marcos que te permiten empezar con rapidez y personalizarte en tus necesidades. En esta clase, veremos el paso de la Slim delina paso paso a paso desde la creación de tu primer sitio web para explorar las solicitudes, los formularios, JSON, class, autentificación y mucho más.

Al final de este curso, habrás construido tus primeras aplicaciones web en Slim, incluyendo un sistema de ingreso, un catálogo de productos de comercio electrónico y la base musical buscable.

Conoce a tu profesor(a)

Teacher Profile Image

Chris Worfolk

Profesor(a)

Chris Worfolk is a psychologist and software consultant. He is the author of How To Exit VIM and Do More, Worry Less.

Ver perfil completo

Habilidades relacionadas

Desarrollo Lenguajes de programación PHP
Level: Beginner

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción: Hola y bienvenidos a este curso sobre PHP. Micrófono funciona usando Slim si eres nuevo en los frameworks de Petri y Michael y genial , porque estaremos empezando de abajo hacia arriba. Por lo que realmente comenzamos con lo básico y construimos un realmente simples aplicaciones en vivo y luego vamos a escalar eso a usos más avanzados. Si eres una perra existente, sé desarrollador ya familiarizado con sobre frameworks, entonces maravilloso. Te va a encantar Slim porque es súper simple, realmente fácil de empezar, pero escala increíblemente bien. Entonces si quieres construir aplicaciones más grandes, he construido aplicaciones más grandes, incluyendo tiendas de comercio electrónico, incluyendo tiendas de comercio electrónico sistemas complicados de administración de contenido, bases de datos de gestión de clientes, todo delgado escalas. Realmente bien, por lo que empieza simple y se vuelve bellamente más grande y te ayudará. Entonces realmente creo que te va a encantar. Una vez que obtienes Teoh, delgado, probablemente no veas la necesidad de usar sobre frameworks porque esto hace casi todo lo que necesitas. Yo soy Chris. Tengo Bean, un consultor de software. hace más de 15 años. He trabajado para multinacionales para startups. Me encanta la programación, y Slim es mi marco favorito personal de elección. Por lo que no puedo esperar para enseñarte esto. Empecemos 2. ¿Qué es un microframework?: en esta lección se verá lo que es un trabajo de micrófono. Podría ayudar si empezamos por buscar lo que es un framework porque podríamos empezar a construir cada sitio web desde cero en hacer todo nosotros mismos, manejando la solicitud sobre la respuesta y todo el enrutamiento y el template ing. Pero, ah, muchas de estas cosas se comparten en todas las aplicaciones web. Básicamente, cada aplicación web va a necesitar algún tipo de sistema de decir, vale, lo que estás bien, es el usuario solicitando y a dónde los vamos a enviar a lo que vamos a hacer cuando hagan esa petición? Y así a los ahorradores de tener que hacer que la gente se le ocurrió marcos. Andi. Hacen cosas como enrutar pre procesamiento, el resultado de devolución de solicitud, administrar todas las dependencias, tener algún tipo de sistema de plantilla ing administrando variables de sesión. Y hay un montón de marcos populares en su sinfonía en DLA. Ravel es fin solía ser más popular. Ha declinado recientemente. Código pastel de encendedor, ph. B. Todos estos vienen con un torrente todas las funcionalidades para facilitarnos la vida. Pero a menudo son bastante grandes y voluminosos, y nos dan toda esta funcionalidad fuera de la caja y tal vez que queremos algo de ella, pero no queremos más de pedacitos de ella. Tenemos nuestras preferencias personales por cómo queremos hacer plantilla ing o gestión de sesiones o este gits para haber arrojado en eso, ralentizándolo un significado. Tenemos que hacer una carga, bootstrapping y escribir un código inicial y estos grandes controladores que realmente no queremos hacer. Y solo queremos algo súper simple para la próxima generación de cosas que salieron en micro frameworks, lo que despojó mucho de eso. Dijeron OK, el componente core rial ve es básicamente el Reuss ing y algunas otras cosas encendidas. Mientras podamos hacer eso, queremos mantenerlo realmente simple. Queremos que la gente a L escriba un solo archivo Aplicación web donde puedan decir OK, si un usuario va a esta ruta, entonces devolver esta respuesta muy popular con los ojos AP, por ejemplo, no necesitamos todo tan grande, gestión de sesión compleja y plantilla ing mucho tiempo, y así realmente consiguió condenas a este marco súper simple. Esto significó que semanas de micrófono o mucho más rápido y más fácil de configurar como discutimos a menudo se puede hacer en archivo caliente probablemente querrá usar más para que se vea más limpio y simplemente más fácil de administrar. Pero podríamos meterlo todo en un solo expediente si quisiéramos. Tienden a venir con última funcionalidad agrupada, así que como veremos con Slim, no viene. Tenemos cualquier tipo de motor de base de datos o de motor de plantilla ing, pero sí hace que sea bastante fácil enchufar uno, para que si queremos hacer eso, podamos. Andi, a menudo escalan muy bien, por lo que la gente a veces piensa que el micrófono funciona solo para sitios web con un par de páginas, pero en realidad especialmente delgado con el poder que tiene es, puedes escribir una aplicación Web completa con cosas complejas como la autenticación en y lógica empresarial compleja, y en realidad puede. Todos caben dentro. Slim se adaptará, y tienes que ir a conseguir esos servicios tú mismo. Pero se enchufan muy bien por lo que los trabajos de micrófono están en una herramienta increíblemente poderosa en que puedes empezar muy simple y construir aplicaciones Web bastante complejas, tal como podrías con un marco más grande, pero con mucho más personalizable y solo mucho más fácil de empezar y más rápido 3. Nuestra primera aplicación: en este módulo. Vamos a escribir nuestra primera aplicación Web en slim, y va a ser el clásico hola mundo. Entonces nada súper emocionante, pero va a mostrar son las bases. ¿ Y qué tan fácil es escribir una aplicación delgada antes de pasar a proyectos más sustanciales? 4. Conceptos de la ruta: Veamos brevemente la teoría detrás del enraizamiento. Entonces esencialmente, vamos a crear ah, aplicación web basada en el trabajo del micrófono, vamos a ver firmar un montón de rutas hacia ella. En el caso de Slim, es simplemente llamando a una función basada en el verbo que queremos y luego pasando una u r l y una devolución de llamada. Entonces, por ejemplo, si queremos obtener solicitud, que es el estándar get post put dilatar en este caso, mayoría de nuestras solicitudes van a estar recibiendo tal vez algún elenco postal y así llamaremos al método get en la app le pasará la cadena que queríamos igualar. Entonces si eres un flash page dos, queríamos leer a esta función. Si eres el u r L. Slash pagado gratis, entonces queríamos enrutar a la función plateada en el segundo parámetro que vamos a pasar es contar el trabajo telefónico delgado. ¿ Qué debemos hacer cuando coincidimos con este u r l Así que esta podría ser una función anónima? Podría simplemente O podría ser una función con nombre, una clase de controlador que explorará más adelante en el curso. Pero básicamente vamos a definir la ruta diciéndonos qué quiere mapear y luego qué queremos que haga el marco cuando consiga ese partido. 5. Instalación de dependencias: Lo primero que vamos a hacer es instalar las dependencias usando PHP manager, compositor. Entonces para hacer eso, vamos a subir aquí a la terminal o al símbolo del sistema si estás en Windows. Y vamos a decir compositor y vamos a requerir, y vamos a necesitar unas cuantas bibliotecas aquí. Por lo que vamos a necesitar la biblioteca principal slim. También vamos a necesitar slim dashed PSR siete, y delgado HTTP. Técnicamente podrías hacerlo sin esos. Y si quisieras, solo podrías traer Slim dash slim, y podrías traer tus propias bibliotecas HTTP y PSR. En la práctica, sin embargo, nunca queremos hacer eso. Siempre queremos traer estas bibliotecas porque funcionan muy bien con slim. Entonces era sólo si se dijera, migrando un proyecto heredado, tenía que tener voz y PSR siete biblioteca que necesitarías hacer eso en la práctica. Podemos simplemente traerlos cada vez. Por lo que solo dejaremos que los compositores se alejen y descarguen todo lo que necesitamos. Está bien, eso se ve genial. Enfriar. Por lo que se descarga todas estas dependencias. Y si entramos en nuestro proyecto, y ahora podemos decir que tenemos este archivo compositor generado con las bibliotecas que pedimos. Entonces también tenemos este compositor dot loc. Esa es la que le dice al compositor exactamente qué bibliotecas hemos descargado, incluyendo todas las dependencias. Por lo que nunca editarías este archivo. Sólo habríamos leído a un compositor JSON. Este es autogenerado por compositor. Y luego también tenemos el archivo de proveedor, que contiene todas las dependencias mismas. Ahora en este momento, si hiciéramos todo para conseguir que incluiría nuestra carpeta de proveedor y queremos componerla, descarga esto cada vez que lo instalamos en un equipo nuevo. Entonces sigamos adelante y creamos archivo gitignore para esto en un minuto, que está en el root dot git ignore. Si no vas a estar usando get, esto no importa demasiado. Pero si lo estás, probablemente estés familiarizado con gitignore y solo vamos a decirle que ignore el directorio de proveedores. Entonces aquí tenemos nuestras dependencias descargadas y deberíamos estar listos para empezar a codificar. 6. Nuestra primera página: Hemos instalado todas las dependencias que necesitamos. Entonces ahora sigamos adelante y creemos nuestra primera página. Por lo que crearemos un nuevo archivo PHP. Y vamos a llamar a este index.html HP. Voy a crear un nuevo directorio llamado público y guardarlo en eso. Y entonces vamos a necesitar traer algunas cosas. Entonces carguemos en algunos espacios de nombres. Sí. Voy a necesitar la interfaz de respuesta. Cargar la respuesta inicial. Y luego y haremos lo mismo la interfaz de solicitud. Y también estoy trayendo en la fábrica delgada. Y entonces también queremos cargar en todas nuestras dependencias y componerlas. Hace que sea realmente fácil hacer eso simplemente usando la carga automática. Y luego vamos a seguir adelante y envolveremos. Entonces lo llamaremos app. Y le preguntaremos a la fábrica de aplicaciones y llamaremos al método de creación o no. Y luego definiremos nuestra primera tarifa. Por lo que llamaremos al método get porque esta puede ser una solicitud GET. Y solo lo haremos rebanar por ahora. Y luego podemos definir una función para decir, vale, si igualas esta ruta de slash, este homebrew ejecuta esta función. Y vamos a tomar como parámetros la solicitud y la respuesta. Y luego dentro de esto, vamos a decir respuesta conseguir cuerpo. Y vamos a escribir algo de texto. Entonces, solo hagamos un Hello World por ahora. Y luego le devolveremos la respuesta. Una vez que hayamos definido nuestras raíces, podemos llamar al comando Ejecutar. Entonces vamos a pasar por lo que hacemos aquí dentro. Oye, estamos cargando en algunos espacios de nombres y paquetes. Después nos aseguramos de incluir todas las dependencias que hemos instalado vía compositor. Estamos creando nuestra aplicación aquí usando slims app factory create method. Y luego definimos nuestras raíces. Y estamos diciendo si algo coincide con la slash de puntos, por lo que la página de inicio ejecuta esta función. Y esta función va a escribir hola mundo a la respuesta y luego enviar esa respuesta al navegador. Y luego una vez que terminamos de construir todo para la app, llamamos al método de ejecución para decirle slim, hey, ahora esto está listo. Y puedes seguir adelante y ejecutar la app. 7. Cómo dirigir el proyecto: Hemos escrito nuestra primera raíz, así que sigamos adelante y corramos y veamos si funciona. Por lo que volveremos a la terminal o al símbolo del sistema. Y queremos entrar a este directorio público, que es lo que va a ser la raíz web de nuestra aplicación. Por lo que todo nuestro código se mantendrá fuera de las raíces Web. Si algo salió mal, expondremos nuestro código, pero este bit será público. Y podemos usar PHP es servidor de desarrollo interno para esto. Entonces podemos escribir PHP dash S, y luego le pediremos que ejecute un servidor web en localhost colon 8 mil. Y genial. Está en marcha y en marcha. Por lo que ahora podemos ir al navegador y simplemente teclear localhost 8 mil. Y ahí vamos. Tenemos nuestro HelloWorld que está funcionando en un navegador. Por lo que hemos creado nuestra pequeña raíz pelo slash hola mundo. Hemos ejecutado PHP es servidor dev local y ha funcionado. No terriblemente útil, pero ahora has escrito con éxito tu primera aplicación en slim. Entonces ahora que tenemos esto funcionando, sigamos adelante y hagamos algo más interesante. 8. Rutas: Ahora tenemos nuestra primera ruta. Adelante y sumamos una segunda. Y esta vez hagamos algo un poco más interesante que juts un slash. Entonces digamos hallo slash Jane es la raíz. Y de nuevo, definiremos un cierre, una función anónima. Y tenemos un cuerpo otra vez. Y esta vez diremos, Hola Jane. Y luego volveremos a devolver la respuesta. Esto se parece a la línea superior, excepto en esta ocasión nos dan una ruta de slash hola slash Jane. Añadamos un punto y coma ahí. Y ahora si volvemos con él, vamos a cortar hola, flash Jane. Podríamos volver a echar raíces, Perfecto. 9. parámetros de la ruta: Entonces esto es algo útil. Ahora somos capaces de definir diversas rutas. Pero mucha del tiempo cuando se trabaja con PHP, queremos que estas raíces sean dinámicas. Queremos poder pasar digamos, una variable y tal vez es la URL de una entrada de blog. De qué podemos hacer eso usando parámetros. Entonces otra vez, definamos una solicitud get. Y esta vez vamos a saludar. Y voy a poner su nombre en llaves, lo que le dice a slim que es un parámetro. Y luego volveremos a definir la función. Y esta vez voy a pedir un tercero, que es un array llamado 4xh. Y esto nos dará los argumentos, que en este caso son los parámetros sacrificando nombre aquí. Y vamos a capitalizarlo. Y luego accederé a la matriz de argumentos y sacaré el nombre. Entonces lo que sea que alguien ponga en la URL aquí, di que podrías hacer slash hola slash Chris. Entonces eso se pasará entonces a través de la matriz 4xh. Y lo capitalizaremos aquí y podremos acceder a ella. Entonces vamos a escribir eso en tu respuesta. Volvamos a coger el cuerpo. Vamos a usar. Entonces diremos Hola, pásame un nombre. Y luego le devolveremos la respuesta como de costumbre. Y necesitaré cerrar. Por lo que podemos pasar ahora cualquier cadena aquí, cualquier variable usando la URL, y llegará a esta función. Entonces probemos esto. Y nos falta porque he añadido un extra que vamos tenemos hola chris, perfecto. Y podría cambiar esto o podría saludar a Sam. Y las pistas se rinden a Jane. Pero si vamos a Jane, aún así se va a dar de baja esto porque va a caer en cascada por las raíces. Pero si no coincide con ninguno de estos, no podemos. Aquí comodín de Dick, donde podemos simplemente pasar cualquier cosa. Se toma el parámetro de nombre aquí está pasando a la matriz aquí, y estamos sacando la matriz y podemos hacer lo que queramos con la función. En este caso, sólo lo estamos escribiendo a esta cadena. 10. Servicios: en este módulo, vamos a ver la inyección de dependencia. Con cualquier web up, es probable que tengas un montón de servicios como conexiones a bases de datos, correos electrónicos de administración sexual con los que quieres conectarte y poder traer. ¿ Y cómo gestionamos todas esas dependencias? Bueno, Slim no tiene un contenedor de inyección de dependencia incorporado, pero hace que sea realmente fácil importar uno. Entonces en este módulo, vamos a hacer saltos eso y configurar algunos servicios. 11. Inyección de dependencia: Empecemos este módulo mirando alguna de la teoría detrás de la inyección de dependencia. Entonces, si tienes una aplicación Web y probablemente necesitas un montón de servicios, hay una base de datos a la que quizás quieras conectarte. Quieres renderizar algunas plantillas, tal vez odia el correo electrónico. Se quiere administrar algún tipo de datos de sesión, y tal vez se quiera enviar correos electrónicos transaccionales o poner a la gente en algún tipo de proveedor de correo como el chimp de correo. Ahí está todo esta dependencia externa es con la que se quiere trabajar. Ahora. ¿ Cómo nos aseguramos, por ejemplo, si queremos tener una conexión a base de datos? ¿ Cada clase tiene su propia conexión a base de datos que sea horriblemente ineficiente? Y así de vuelta en el día, solíamos usar el patrón singleton. Si tienes edad suficiente para recordar que Andi, cada vez que quisieras usar la base de datos, tendrías que llamar al método get instance, y eso significaría que solo podríamos crear una conexión a base de datos. Y fue horrible porque era simplemente imposible hacer pruebas unitarias fue el gran problema en DSO . Pasamos a la solución donde empezamos a inyectar dependencias. Entonces cuando creas una clase como este controlador, pasarías en la instancia de la base de datos para que cuando estemos unitario probándolo, pudiéramos pasar un simulacro ahí en que nos permitiera hacer todas las pruebas que necesitábamos. Eso está bien, pero significa que necesitas a Teoh. Tener todas sus dependencias inyectadas en la clase. Por lo que cada vez que escribes una nueva clase, tal controlador, tienes que pasar todo lo que necesitas. Y eso podría ser un montón de cosas. En una gran aplicación Web, había muchos servicios, por lo que el modelo más nuevo es usar lo que se llama contenedor y en un contenedor, sabe cómo acceder a todos los servicios que necesita. Entonces, por ejemplo, en este código aquí, estamos creando un contenedor en estaban registrando un servicio de base de datos en estaban diciendo, Si alguien quiere una base de datos, aquí está la clase que necesita. Aquí te mostramos cómo Winston ella te odiaba crear su clase de base de datos y un interior de envoltura. Podemos hablar con el contenedor de inyección de dependencia y decir, OK, consígueme la base de datos, y solo cuando llamemos a ese servicio lo contiene hace y luego crear la instancia fuera de la base de datos, pero no necesidad de preinscribir eso en la clase. Podemos simplemente empezar a codificar y decir, Correcto, necesitamos base de datos en nuestro contenedor de inyección de dependencia. Nuestro servicio Lehrer sabe levantarse por nosotros. 12. Instalación de un DIC: Slim ya no contiene un contenedor de inyección de dependencia usado para venir empaquetado con 1-bit. Las nuevas evasiones de la duda delgada. Entonces si queremos un día, vamos a tener que seguir adelante e instalar uno. Entonces eso es bastante fácil, que está aquí en nuestra terminal. Y volvamos a nuestro proyecto. Y lo vamos a pedir. Por lo que diremos componerlo, requerir PHP dash, dash d pi. Por lo que este es un contenedor de inyección de dependencia de terceros. Es el más popular en PHP, por lo que va a hacer bien, compondrá un go adelante e instalará eso. Ahora. Sólo me tomaré un par de segundos. Y descargará todas las dependencias. Php DI necesita. Genial, así que eso está hecho. Y si echamos un ojo en nuestra carpeta de proveedores, tenemos PID P d i en eso. Genial. Entonces aquí estamos en un archivo de índice y podemos configurar nuestros contaminantes de inyección de dependencia. Por lo que traeremos espacio de nombres importante. Y luego justo debajo de donde hemos traído nuestras dependencias, seguiremos adelante y crearemos un contenedor. Queremos hacer esto antes de crear nuestra aplicación. Entonces vamos a crear un contenedor y luego le diremos a slim que queremos usar este contenedor. Entonces aquí estamos en una fábrica. Aquí es donde estamos creando son adelgazados. Pero antes de que hayamos hecho eso, hemos creado esta inyección de dependencia que contiene un par. Y nos pusimos, le dijo a la fábrica AP que cuando creamos una app, queríamos usar este contenedor. Y así cuando crea el arriba-abajo aquí, ya está usando esto, lo cual es genial. Obviamente no hay nada en nuestro contenedor de inyección de dependencia ahora mismo, pero está configurado listo para usar para que cuando tengamos algunas dependencias, queramos inyectar en la app, algunos servicios, podamos hacer eso. Entonces hagámoslo en la siguiente lección. 13. Instalación de una biblioteca de templado.: Entonces en el proyecto original, acabamos de obtener la respuesta y le escribimos algo de HTML crudo. No hay etiquetas HTML reales en hábitats donde estamos haciendo un Widgets invitando a etiquetas HTML crudas. Y sería mejor si tuviéramos algún tipo de motor de plantilla o motor de vista que pudiera hacer eso por nosotros. Slim no viene con uno, por lo que necesitamos proporcionar uno y podemos usar lo que queramos. Pero para los efectos de este curso, vamos a usar uno llamado bigote. Entonces de nuevo, vamos a volver a la terminal o prompt de comando y vamos a hacer compositor requerir, debe pedir slash bigote. Y le dará a compositor un par de segundos para traer eso. bigote es una plantilla realmente sencilla en el lenguaje. Por lo que será genial para este curso de aprendizaje pensado porque es bastante fácil de entender, tiene lógica mínima en la plantilla. Genial, así que eso está en, Ahora sigamos adelante e instalemos esto en nuestro proyecto. 14. Configuración del DIC: Por lo que tenemos nuestra plantilla y tenemos instalada nuestra inyección de dependencia o Service Manager. Entonces, antes que nada, vamos a deshacernos de estos y luego a aparecer en el contenedor. Vamos a configurar esto para que cuando queramos acceder a un servicio de plantillas, podamos, por lo que llamaremos a contener un conjunto y volveremos a definir una función anónima. Jaja, me gusta conseguir mis puntos y comas temprano para que no nos olvidemos de ellos. Y diremos nuevo bigote en el motor SQL. Y les pasaré config aquí. Pasaremos por esto en un minuto. Por el momento. Solo bajemos un código. Está bien, eso se ve bien. Por lo que estamos estableciendo un servicio llamado templación. Eso significa que cuando en, cuando definamos nuestras raíces y tratamos de acceder a la templación atendida, ejecutará esta función, y esta función nos entregará este motor de bigote, que es el bigote templando servicio. Ahora podrías preguntarte, Vale, hemos importado todos los espacios de nombres aparecen para todo lo demás. ¿ Por qué no necesitamos hacer eso con bigote? Y eso se debe a que el bigote está en el espacio de nombres raíz y aquí estamos en el espacio de nombres raíz. Entonces, digamos, este archivo, habría una definición en la parte superior que dice namespace deal.II. Y entonces diría como contenedor de clase. Y por eso necesitamos importarlo desde este DI, espacio de nombres. Pero el motor del bigote no tiene esta declaración de espacio de nombres y así no necesitamos hacer una declaración para au pair. Segundo, ¿Qué estamos haciendo aquí? Bueno, le estamos diciendo bigote de dónde cargar la plantilla, y pronto vamos a crear el directorio de esta plantilla. Entonces estamos diciendo que me genere un motor de bigote. Y cuando necesitas cargar la plantilla utiliza el cargador del sistema de archivos y cargarlo desde esta ubicación y no tienes extensiones automáticamente. Por lo que podrías, si todas tus plantillas se van a llamar HTML dot, podrías agregarlo ahí. Pero creo que es más fácil definir esto a medida que avanzamos. Entonces lo cargaremos desde el archivo de plantilla y solo cargaremos el nombre del archivo, le damos n Veamos cómo esto, en realidad usamos esto en la siguiente lección. Y entonces todo esto empezará a juntarse y tendrá mucho más sentido. 15. Uso de el servicio de templado.: Ahora que hemos configurado el servicio de plantillas, sigamos adelante y lo usemos. Entonces bajaremos aquí después de haber creado la app y crearemos una ruta y diremos hola, nombre igual que hicimos con el proyecto original. Y de nuevo, definiremos la función anónima. Entonces vamos a tomar en nuestra búsqueda y nuestra respuesta y algunos argumentos. Está bien, bien. Y diremos que obtenemos el servicio de plantillas. Y llamaremos al método aleatorio, que es un método bigote que dice render algo de HTML. Y le daremos un nombre de plantilla, hello.html. Y luego pasaremos en variables también. Entonces la forma en que renderiza plantilla es decirle bigote qué plantilla quieres renderizar y qué variables quieres agregar una en este caso, solo vamos a, le voy a pasar una variable llamada nombre. Y vamos a sacar esto hacia arriba los argumentos, que por supuesto va a tomar esta cabeza que pasamos. Entonces eso va a generar esta cadena HTML. Y entonces podemos decir respuesta, conseguir cuerpo, ¿verdad? Escribiremos nuestro HTML y luego devolveremos la respuesta. Está bien, eso se ve bastante bonito. Vamos a seguir adelante y crear una plantilla en la siguiente lección. 16. Crear una plantilla: Vamos a crear una plantilla entonces. Entonces esto es realmente fácil. Vamos a usar un tanque de altura uno. Voy a saludar. Y el bigote utiliza este sistema de llaves dobles para cualquier variable que quieras pasar. Y literalmente eso es todo. Entonces podemos ahorrar eso, llámenlo hello.html. Y en nuestro espacio de trabajo vamos a crear un directorio de plantillas y guardarlo. Genial. Entonces miramos lo que está pasando aquí. Cuando llamamos a esta ruta con dicho, Llegar a la plantilla y servicio, renderizar este hello.html, que dijimos buscar en el directorio de plantillas, pasando esta variable de nombre. Y luego una plantilla. Tenemos ese par de set up. Por lo que esto debería estar todo listo para salir ahora. 17. Renderizar una página: Por lo que ahora estamos listos para ejecutar nuestros proyectos o solo 0.1 diminuto error de sintaxis. Esto debe ser adulto. Eso se ve bien. Entonces entraremos en ella y entraremos en nuestro directorio público. Y de nuevo, ejecutaremos PHP es servidor de desarrollo local, así que haremos pitch P dash S, localhost, 8 mil. De acuerdo, ahora definimos las raíces nombre hola slash. Entonces intentemos cortarle a Kim. Perfecto. Entonces tenemos una etiqueta H1. Entonces estamos pasando el nombre aquí como podría ser cualquier nombre aquí. Eso se está pasando aquí como argumento. Y tomamos una discusión con enviarlo al bigote para renderizar esta plantilla hola. Estamos cayendo en Jaja, Genial. Por lo que ahora funciona un sistema de plantillas. 18. Controladores: ya hemos escrito algunas páginas en. Hemos traído un servicio para ayudarnos a prestar a esas páginas, pero por el momento no es súper escalable. Su mayor parte de su en un solo archivo. Y si quisiéramos escribir una aplicación más grande, se pondría un poco desordenado. Entonces, ¿cómo hacemos eso? Will slim escalas realmente muy bien porque podemos usar controladores de la misma manera que usaríamos controladores en un marco más grande. Pero se ranura realmente bien en delgado también. Y así en este módulo, vamos a ver cómo hacer eso. 19. Crear un controlador: Poder meter todo nuestro código en un solo archivo es útil si solo tenemos un proyecto pequeño y mantiene las cosas bonitas y sencillas, ¿qué pasa si tienes un proyecto más grande? Si tenemos 20-30 raíces, entonces de repente index.js HP va a ser enorme. Entonces, en cambio, podemos dividir las cosas en archivos separados y podemos usar controladores, imbéciles como podrías usar un controlador y un marco más grande como sinfonía o Lera val. También puedes usar controladores en slim. Es tu elección si quieres poner todo en un solo archivo o dividirte. Entonces sigamos adelante y creemos controlador. Y solo voy a seguir adelante y guardar esto en el primer controlador. Y voy a ponerlo, voy a Chris directorio fuente. Y luego dentro de eso voy a crear directorio de controladores y salvarnos primero controlador. Está bien, genial. Bonito. Entonces primero voy a dar un espacio de nombres y después vamos a querer traer respuesta de solicitud. Sólo vamos a agarrarlos. Y luego también voy a traer esta interfaz de contenedor y usamos este daño de válvula también. Y entonces sólo definiré este controlador. Entonces cuando lo útil que sucedió con Slim es que cuando crea este controlador hacia adelante, pasa en el contenedor de inyección de dependencia, la interfaz del contenedor. Por lo que la CPU está llena. Podemos guardar eso a esta variable de instancia aquí. Y luego nosotros, cuando queremos acceder a nuestros servicios, accedemos a nuestro contenedor de inyección de dependencia favor hacia abajo. Lo tenemos en esta variable lista. Bien conoció a su privado porque no necesitamos a nadie más para acceder a él ahora mismo. Y luego definiremos un método. Entonces definamos una función de página de inicio y levemente las funciones anónimas en index.html. Vamos a obtener una solicitud y una respuesta aquí y accederemos a nuestro contenedor. Y de nuevo diremos get templating, say render homepage que HTML, Tony para pasar cualquier variable. Y en este punto, y de nuevo diremos conseguir cuerpo y llamar al método de escritura, pasar el hombre HTML. Y ayudaría si pudiera deletrear retorno correctamente. Ok, lindo. Entonces en lugar de una función anónima, ahora tenemos este controlador con este método de página de inicio en, en la siguiente lección, sigamos adelante y creemos esta plantilla de página de inicio. 20. Crear las plantillas: Aquí hemos creado nuestro controlador. Entonces sigamos adelante y creemos esta plantilla de página de inicio. Entonces voy a crear un nuevo archivo aquí y vamos a usar algunas incluciones. Entonces la forma en que hacemos eso en bigote es con los tirantes rizados y luego mayor que la flecha. Y luego pondremos una plantilla. Y luego crearemos el cuerpo principal. Diga, bienvenido a mi página de inicio. Gracias por visitar. Y usaré esa sintaxis de nuevo para traer el pie de página. Y lo guardaremos como HTML de la página principal. Y lo pondremos en el directorio de plantillas. Pareja más cosas que necesitamos. Por lo que necesitamos realmente crear estos pies de página de espacio de cabeza. Ahora podrías crearlos manualmente, pero también puedes simplemente copiarlos y pegarlos desde el código de muestra. Entonces si vamos en proyecto eólico tres aquí. Entonces sigamos adelante y tomemos este encabezado. Y solo guardaremos esto como encabezado donde quiera que estés trabajando. Y las fotos también deberían ser bastante directas. De nuevo, dibujaremos eso en. Y una de las cosas que queremos tener cuidado es el encabezado n-x incluye este style.css. Entonces sigamos adelante y tomemos eso de libre también. Está en el directorio público. Entonces style.css y yo sabemos espacio de trabajo. Eso lo guardaremos en el directorio público. Entonces eso es, haré las cosas más bonitas también. Genial. Entonces tenemos nuestra plantilla aquí, tenemos nuestro controlador aquí. Sólo tenemos que cablear todo ahora. 21. Autoloading: En los tiempos pasados de PHP, una vez que tengamos este primer controlador, podríamos entrar aquí y es algo así como requerir salsa puede rodar. Primer controlador. Pero esta es una masa real porque entonces el código está fuertemente acoplado y realmente difícil de probar. Entonces, en cambio, ahora podemos usar la carga automática basada en el espacio de nombres porque configuramos este espacio de nombres o pagador. Entonces sigamos adelante y configuremos eso. Tenemos que bajar a nuestro archivo de compositor. Y vamos a sumar aquí una nueva sección llamada auto load. Y va a ser un PSR para y vamos a decir en slash slash. Entonces cualquier cosa, cualquier espacio de nombres que comience con una aplicación, debes cargar auto desde el directorio fuente. Entonces eso significa que cuando intentamos leer Reference app controller, primer controlador, va a decir, vale, comienza con una app. Entonces mira en el directorio fuente, y luego dirá: OK, está en el controlador y es el primer controlador. Entonces eso significa que PHP ayudaremos a encontrarlo mágicamente. Entonces lo siguiente que necesitamos para salir a nuestra terminal y solo actualizar compositor. Deja compositor. Ahora eso ha pasado. Entonces volvamos a la ruta aquí y hagamos volcado compositor, dash auto load. También podemos regenerar completamente los archivos del compositor. Pero si solo quieres actualizar la carga automática, entonces compositor dump dash Autolite, haremos lo que necesitemos. Está bien, genial. Entonces eso ha generado algunos nuevos archivos de piloto automático y ahora deberíamos estar listos para cablearlo. 22. Enrutar a un controlador: Adelante y cableemos este controlador. Por lo que nos desharemos de este viejo código desde el primer proyecto. Y no definimos un get root de nuevo. Y sólo lo haremos la raíz. Entonces normalmente aquí pasamos una función anónima, digamos, Vale, si coincides con esta URL, entonces entreguemos esto. Y aquí vamos a hacer algo similar, pero en lugar de hacerlo funcionar, vamos a pasar en una clase y un nombre de método. Entonces vamos a decir controlador de aplicaciones primer controlador, esa es la ruta de namespaced completa. Y vamos a decir homepage de colon. Entonces este colon es sintaxis delgada específica diciendo que esta es la clase, este es el método en esa clase porque eso es lo que llamamos aquí que queríamos ejecutar. Y eso es literalmente todo lo que necesitamos hacer para cablearlo. Entonces sigamos adelante y volamos el servidor de desarrollo y lo veamos funcionando. 23. Prueba del controlador: Nos acercaremos a nuestra terminal y vamos a cd al directorio público. Y luego como normal, le dirá PHP al servidor de desarrollo de sitios. Mayor corriendo en localhost 8,000.5, obtenemos un localhost 8 mil. Perfecto. Tenemos nuestra página de inicio. Tenemos nuestro renderizado de la página de inicio por aquí. Y está aún más en nuestro encabezado también en nuestra hoja de estilo. Y todo se ve bien. 24. Controladores abstractos: Esto parece que está funcionando muy bien. Pero por el momento, significaría que cuando creáramos este controlador, tendríamos que hacer todo este código cada vez. Estaría bien si pudiéramos simplificar mucho esto. Entonces lo que podríamos hacer es crear un controlador abstracto para hacer mucho de ese bosque. Entonces sigamos adelante y hagamos eso ahora. Dejemos que solo tomemos esto como base, lo llamemos controlador dot PHP, y podemos trabajar desde ahí. Entonces voy a hacer de esto una clase abstracta. Entonces cuando no podemos instanciar directamente, tienes que extender usando otra clase. Y lo llamaremos controlador. Y cambiaremos esto para protegerlo porque queremos que nuestras clases infantiles puedan usarlo. Y luego volveremos a este método de la página de inicio aquí. Y crearemos una función llamada render, que hará parte del levantamiento pesado en cuanto a renderizar HTML. Entonces tomaremos una respuesta, tomaremos un nombre de plantilla, y tomaremos cualquier dato y variables que un quiera machacar, que por defecto será una matriz vacía. Y luego haremos mucho lo mismo que hacemos en una función normal y llamaremos al esfuerzo aleatorio. Está bien, eso se ve bien. Entonces ese es un controlador desde el que ahora podemos extendernos. Y vamos a seguir adelante y crear controlador que use eso. Entonces no vamos a necesitar eso. Y llamemos al segundo controlador. Genial, vamos a guardar eso. Y ya no necesitamos este código porque eso está en su padre aunque extendiéndose. Entonces vamos a extender controlador. Y vamos a deshacernos del nido también. Y ahora crearemos una función normal. Entonces llamaremos hola a esto. Y ahora podemos usar ese método especial que creamos en nuestro controlador base. Entonces pasaré en el objeto de respuesta. Plantilla se llamará hola. Y por ahora sólo vamos a codificar duro esto. Está bien, eso se ve bastante bien. Por lo que tenemos nuestro segundo controlador que extiende nuestro controlador basado en controlador base configura cosas como tomar el contenedor de inyección de dependencia y poner en una variable de instancia. Y te da este esfuerzo aleatorio, hace mucho del levantamiento pesado de usar ese bosque. Para que aquí, todo lo que tenemos que hacer es decir, vale, va a ser hola. Y solo queremos resaltar misiones de nombre. Y luego solo necesitamos ese nombre de archivo de plantilla. Tengo esto por aquí, pero pongámoslo al día. Por lo que traemos el encabezado y el pie de página, o si lo borras, solo puedes crearlo desde cero. De acuerdo, de lujo, perfecto. Entonces tenemos nuestro controlador básico, tenemos nuestro nuevo controlador, y tenemos nuestra plantilla. Adelante y cableemos todo esto. 25. Prueba del controlador abstracto: Adelante y cableemos este segundo controlador. Entonces vendremos aquí a nuestras raíces y definiremos una nueva ruta. Y sólo di hola. Otra vez. Le daremos un camino completo. Entonces es el segundo controlador. Y el método se llamaba hola. Ahora mismo si vamos a nuestro servidor de desarrollo, tenemos que hola. Perfecto, así que tenemos hola chris, esa es la variable que pasamos y tenemos un encabezado y un pie de página y funcionando también. Esto es bastante similar a lo que hicimos al principio. Pero si recuerdas en primer controlador este bastante código calderero aquí eso está pasando aquí y dentro. tanto que este segundo controlador, ahora estamos escondiendo mucho de eso en este controlador abstracto. Esto es mucho más bonito porque es literalmente una línea para renderizar una plantilla. Ni siquiera necesitamos tocar la plantilla en servicio en este caso. Pero todavía vamos a mantener esto como protegido poder acceder a través de servicios aquí si queremos, y lo haremos más adelante en el proyecto. Pero simplemente lo hace súper agradable y limpio cuando se usa este controlador abstracto y el patrón ChildController. 26. Solicitud y respuesta: en este módulo. Vamos a ver cómo modificamos los objetos de solicitud y respuesta. Entonces, ¿qué sucede cuando queremos sacar información de la consulta, cadena o envío de formulario? ¿ Qué pasa cuando queremos enviar diferentes formas de datos de vuelta, como Jason? O tal vez un redireccionamiento se verá todo eso en este módulo, y las cosas se pondrán un poco más interesantes en el producto. Front escribirá algo un poco más sustancial y que vamos a crear registros de búsqueda , Got Lord llamó Rockin Records. 27. Recordes de Rocking: En este proyecto, vamos a crear un catálogo de Música con capacidad de búsqueda llamado discos Rockin. Hay un par de cosas que tenemos que hacer antes de empezar. Entonces si vas a Project para el directorio de datos y hay un punto JSON de Album. Eso necesitamos. Entonces solo guarda esto como álbumes a JSON en un directorio de datos. Y en plantillas. Tenemos este encabezado actualizado. Sigamos adelante y copiemos eso a través. Y por último, en el directorio público, también hay una hoja de estilo actualizada. Así que trae esos tres archivos y entonces estamos listos para empezar. 28. Crear la página de inicio: En esta lección, crearemos una página de inicio para catálogo de registros. Para que podamos seguir adelante y deshacernos de este primer controlador. Y oops, zona. Es sólo renombrar este. Y llamaremos a este controlador de búsqueda. Y vamos a renombrarlo aquí para deshacerme de este método él corrí de cero. Entonces diremos función pública, solo llamémoslo por defecto. Va a ser la página predeterminada, la página de inicio. Y mucho ser peticiones. Y no diré respuesta. Fórmula equilibrada muy bien. Ahí vamos. Y luego aquí, vamos a conseguir esa lista de álbumes. Por lo que utilizamos el método de decodificación adyacente y el archivo obtener contenidos. Y entraremos al directorio de datos y llamamos al álbum dot JSON. Por lo que JSON decodifica, puedes tenerlo como un objeto o una matriz y queremos como una matriz. Y entonces vamos a seguir adelante y renderizar una página aquí. Por lo que pasaremos en la respuesta será HTML por defecto. Y vamos a pasar ahí los discos. ¿ Verdad? Por lo que hemos definido la función raíz. Hemos dicho que consiga esa matriz de álbumes y páselo a la plantilla. Entonces sigamos adelante y creemos una plantilla para eso también. Mira paga estándares también, por lo que diremos cabecera. Y si queríamos hacer un bucle en bigote, usamos este hash y una slash para terminarlo. Y luego traeremos nuestro pie de página aquí también. Guarda esto y plantillas. Y luego dentro aquí para cada álbum, Vamos a crear div. Imprimamos el título y el nombre del artista también. Está bien. Bueno, eso es bueno para mí. Lo último es, y vamos a cablear esto. Entonces entraremos en nuestro index.html, se le dé a este viejo código y diremos app. Y definiremos una ruta get. Se va a conseguir el controlador de la app, controlador de búsqueda predeterminado. ¿De acuerdo? Y si volvemos a nuestro servidor de desarrollo y perfecto, Ahí vamos. Entonces por defecto tenemos esta página de inicio, registros de Rakim, y tengo al artista desaparecido aquí. Entonces vamos a seguir adelante y solucionar problemas. Y ahí vamos, señor T, yo soy perfecto. Por lo que ahora tenemos el nombre del álbum y el nombre del artista mostrando en la misma página. 29. Busca con cadenas de consulta: Dijimos que queríamos que el catálogo fuera de búsqueda. Entonces vamos a seguir adelante y permitirnos buscar con cadenas de consulta. Por lo que solo podemos copiar y pegar este método y lo llamaremos búsqueda. De acuerdo, ahora yo, así que todavía vamos a necesitar cargar nuestros álbumes en. Pero también vamos a necesitar obtener la cadena de consulta. Y eso se va a llamar Q. Así que oye, sacaremos la variable q query string de la solicitud. Y luego diremos: Vale, si hay una consulta, entonces vamos a filtrar esta matriz. Por lo tanto, usaremos valores de matriz. Filtrar sustantivos para ser álbum. Tenemos fitness él Y eso una vez que tengamos el código abajo. Y luego aquí abajo, render hacia fuera, que es la plantilla que vamos a crear. De acuerdo, entonces lo que estamos haciendo aquí, bueno, si obtenemos una consulta, si no obtenemos una consulta, sólo la vamos a ignorar y volteamos todos los discos. Pero si sí tenemos una consulta, entonces vamos a tomar estos discos y vamos a filtrarlo en base a si la consulta está en el título o en la prueba todo. Por lo que ahora podemos seguir adelante y crear una plantilla de búsqueda. Se va a la carpeta de plantillas, se puso por defecto. Jaja, vamos a copiar y pegar esto llamado search.html. Y vamos a seguir adelante y dejar el teléfono. Está bien, no se ve bien. Entonces tenemos activos de aquí sin embargo, los álbumes, tenemos un método aquí. Entonces sigamos adelante y lo cableemos. 30. Cómo ejecutar una búsqueda: Adelante y cableemos la búsqueda de Chin y comprobemos que funciona. Por lo que abriremos índice punto PHP y definiremos un nuevo aquí. Habrá para obtener Ru slash search y cablearlo a los controladores de aplicaciones, tal controlador. Y llamamos al conjunto de métodos. Genial. Entonces pasaremos a nuestro desarrollo, lo que sea. Tenemos una búsqueda de slash. Esto se ve bien. Entonces tenemos un cuadro de búsqueda aquí, y tenemos todos nosotros los álbumes aquí no sabe si ser filtrados. Y sigamos adelante y busquemos yo vengo por alquiler. Y perfecto. Se filtra todo hasta sólo los álbumes con el nombre Albo del artista en esta cuerda. Entonces eso está funcionando a la perfección. 31. Presentación de formas de forma: Entonces en este primer ejemplo, hemos usado una cadena de consulta. Por lo que cuando hacemos un conjunto , aparece en la URL. Pero, ¿qué pasa si queremos hacer un envío de formulario usando post? Eso es bastante fácil de hacer. Vamos a pasar por cómo lo hacemos. Por lo que comenzaremos con la plantilla de búsqueda. Haremos una copia de eso y solo lo llamaremos formado nuestro HTML. Y vamos a cambiar el método a un método post aquí. Y luego aquí copiaremos y pegaremos este método de búsqueda. Y otra vez lo llamaremos forma. Y esto va a funcionar casi exactamente igual, pero porque ahora es una variable post en lugar de una cadena de consulta en lugar de obtener parámetro de consulta, que va a decir get Program. Y vamos a necesitar cambiarte esto a ti en nueva plantilla. Está bien, encantadora. Y luego en el siguiente paso, PHP app control set controller form. Entonces si voy a formar ahora, B, un colon, ahí vamos. Está bien, perfecto. Y esto se ve bien, pero en realidad si hago una búsqueda aquí, no va a funcionar. Porque cuando definimos la ruta, definimos, el gueto y ahora estamos tratando de publicar en ella. Por lo que podríamos cambiar eso para publicar. Pero entonces cuando sólo tratamos de cargarlo normalmente va a decir que no es un get rw es la sala de correos. Entonces en cambio, podemos usar el verbo cualquiera. Y eso permitirá tanto GET como post. Entonces tenemos que hacerlo ahora. Pero está bien. Y poniendo un término de búsqueda, genial. Entonces lo está publicando ahora ya no está en la URL, pero seguimos siendo capaces de acceder a ella. Es mucho se ve perfecto. 32. Documentos HTTP finos: Podrías estar viendo algunos de los métodos que estamos usando aquí así. Obtener parámetro de consulta sobre el objeto de solicitud y pensando, no puedo encontrar este método en los muelles delgados, ¿dónde está? Y eso es porque cuando se trata de los objetos de solicitud y respuesta es un poco más complicado lamentablemente. Por lo que recuerdas cuando montamos las cosas por primera vez, trajimos a Slim. También iremos en estas dos bibliotecas de solicitud y respuesta, que son PSR siete y HTTP. Y esto se debe a que en realidad puedes intercambiar estos por diferentes bibliotecas si te gustaría esto. Ahora necesitaremos hasta el 99% del tiempo que solo puedes usar estos, pero es lo que llamamos desacoplado para que puedas intercambiar algo más en. Y entonces eso significa que lamentablemente estamos tratando de encontrar a los docs. Podría no estar en un lugar que esperas. Entonces si no puedes encontrar el método en buey adelgazado, Lo primero es mirar al PSR siete docs. Psr siete es un estándar. Por lo que no es una biblioteca concreta específica, sino estándar utilizado por un montón de marcos diferentes y funcionará a través del marco. Entonces si hay un método en jaja que quieres usar, entonces esto estará disponible en slim, pero también estaba disponible en Lera val y sinfonía y todo lo que utiliza el par vio siete estándar. Se te ayudará a usar los mismos métodos estándar. Y luego encima de eso, hay métodos de ayuda de slims porque PSR siete por sí mismo no proporciona mucho. Por lo que también está la biblioteca HTTP delgada, que proporciona muchas funciones realmente útiles y fáciles como cosas como devolver datos con JSON. O es esto una redirección o conseguir los params y cómo el cuerpo pasado. Entonces si estás confundido sobre mojado, mojado para encontrar un método a hacer si solicitud y respuestas no en los perros delgados. Podría ser en la PRC siete docs, podría estar en los delgados docs HTTP. Desafortunadamente, la forma en que desacoplamos las cosas ahora y te permitimos intercambiar diferentes bibliotecas. Y ahora están significa que podría estar en un montón de documentación diferente y es un poco confuso. Pero conforma proyectos mucho más compatibles y extensibles. Y hay buenas razones de programación para hacerlo, pesar de que sí estropea un poco más la documentación. 33. Respuestas de JSON: Hasta el momento hemos estado trabajando con HTML. ¿ Qué pasa si queremos trabajar con sobreformatos como Jason? Bueno, eso es bastante fácil de hacer. Entonces, veamos un ejemplo de cómo haríamos eso. Y podemos cerrar malla estos archivos se abrirá el controlador de búsqueda. Y solo copiaremos y pegaremos en color API controller dot PHP en nuestro directorio de controladores. ¿ Podemos hacer esto por método? Y nos desharemos de este método por defecto también. Y me olvido de cambiar el nombre de la clase. Está bien, encantadora. Entonces lo único que necesitamos hacer, porque delgado lo hace agradable y fácil está destinado. En lugar de devolver algo de HTML, sólo vamos a devolver algo de Jason. Entonces vamos a decir respuesta con Jason, que es uno de esos métodos de ayuda slim, HTTP proporciona. Y vamos a pasar en el array de álbumes. Entonces es el mismo código que antes, pero solo estamos usando esto con el método JSON. Y luego si abrimos la página Index.html, agreguemos una nueva regla. Y el controlador de aplicaciones, controlador API. Y creo que lo llamamos, dijo, modificamos el nombre. Ahora si llegamos a API, perfecto, tenemos todos nuestros datos JSON ahí e incluso podemos ejecutar la consulta. Y también se filtrará hacia abajo. Está bien, encantadora. 34. Código de respuesta: Hasta ahora todo lo que hemos regresado como estar a 200 código de respuesta. Por lo que ha sido una respuesta feliz. Pero, ¿qué pasa si necesitábamos algo como Flora seguidor o 500 o algo así? Bueno, tomemos este ejemplo de Jason y digamos que tiene que haber una consulta. Entonces si no pasas una consulta aquí, en lugar de devolver todos los datos, va a decir alguna vez, necesitas pasar algo. Abramos nuestro controlador API y estamos recibiendo nuestra consulta aquí. Entonces digamos, vale, si la consulta está en blanco, entonces vamos a devolver un error. Entonces vamos a decir respuesta con un estatus de 400. Por lo que 400 es una solicitud inválida. Página no encontrada sería 404, pero en este caso, queremos solicitud inválida para un 100. Y aún vamos a mandar algo de JSON de vuelta. Y sólo podemos encadenar estos métodos juntos. Y vamos a decir solicitud inválida. De acuerdo, genial, así que eso es todo lo que tenemos que hacer si la consulta está en blanco, devolver solicitud no inválida. Ahí vamos. Entonces si pasamos la consulta, aún tenemos un dato. Pero si no, obtenemos esta solicitud inválida. Y si miramos los encabezados de red, oye, podemos decir que obtenemos un error 400 en lugar de un 200. Ok, esto es solo un seguimiento, así que ese es el normal. Esta es la solicitud que hemos hecho y obtenemos una solicitud inválida y se presenta en rojo porque hemos devuelto con éxito un Ara. 35. Manejo de errores: A pesar de nuestras mejores intenciones, A veces las cosas salen mal cuando lo hacen. Queremos poder manejar eso con gracia y hacer las cosas lo más buenas posible para el usuario en su experiencia. Entonces en este módulo, vamos a ver el manejo de errores, y vamos a escribir una tienda de comercio electrónico realmente simple que tala las bicicletas. Simplemente va a ser una lista de bicicletas y página de detalles, y vamos a ver lo que pasó cuando el usuario se pierde y necesita ver una pantalla de error . 36. Tienda de bicicletas: En este módulo, vamos a crear una tienda de bicicletas. Por lo que hay un par de recursos que necesitarán del proyecto cinco. Entonces en el directorio de datos, tenemos estas bicicletas Jason, y guárdalo en nuestro espacio de trabajo. Y luego en el directorio público tenemos algunos estilos actualizados. Y entonces sólo podemos manipular este encabezado también. Y estamos listos para empezar a codificar. 37. Inicio de las Bikes: Vamos a empezar por crear una página de inicio para nuestra tienda. Entonces vamos a crear un controlador al que llamaremos controlador de tienda. Y le daremos un espacio de nombres diciendo controlador slash. Y vamos a agarrar este impulso del espacio de nombres aquí también. Y no soy solo controlador estándar crit. tan afilado se extiende Controlador. Tomar una solicitud y una respuesta es normal. Y vamos a agarrar los yuts declarados de byte como lo hicimos antes, igual que hicimos con los datos de los registros. Agradable. Y voy a usar eso para renderizar página pasando en el array de bicis. Está bien, se ve bien. Así que sigamos adelante y creemos esta plantilla predeterminada también. HTML de punto predeterminado recorrerá las bicicletas. Es un poco de CSS pre-crear Flores y CSS que copiamos en. Y queremos que esto enlace a una página de detalles que construiremos más adelante y pondremos el nombre del byte en ty pen también. Y luego fuimos un poco de moto emoji aquí. Por lo que sólo podemos robar esto de la plantilla en el proyecto cinco. Y luego finalmente, vamos a entrar y por qué esta regla. Entonces diremos controlador, tienda, controlador colon default, y eso debería estar listo para salir. Así que encendemos el servidor dev en la siguiente lección y veamos que funciona. 38. Prueba de la página de inicio: Un cambio clave que necesitamos para hacer esto como plantilla. Voy a cambiar esto de div a spam. El importante se ve bien. Entonces pasemos a nuestra terminal o prompt de comando y lo lanzaremos en localhost 8 mil. Agradable. Y luego en el navegador, iremos a localhost 8 mil. Y aquí tenemos nuestra página de inicio, tienda de tri bike. Las bicicletas de Allah listadas con sus nombres están vinculadas a los detalles y al tipo también. Pero en el momento que no haya una página de detalles, así que sigamos adelante y construyamos eso en la siguiente lección. 39. Página de detalles: En esta lección, vamos a crear página no Detalles. Entonces volveremos a nuestro controlador aquí. Y crearemos un nuevo método llamado Detalles. Y esta vez vamos a necesitar los troncos también. Y luego otra vez, agarraremos las motos, Jason. Hay dos maneras en que podríamos hacerlo. Podemos ponerlo en un servicio, podríamos hacerlo no pararía el constructo. Llévenlo y todo lo va a agarrar. Pero es un liner de un solo. Solo viviremos con esa duplicación de vuelo por ahora. Y estoy todo listo para esta matriz. Por lo que llevaremos una identificación para la identificación de la bicicleta. Y encontraremos esa bicicleta por identificación. Y eso nos dará la clave por la forma en que estamos haciendo esto aquí. Y entonces podemos renderizar una página. Entonces vamos a ejecutar los detalles que HTML. De nuevo, pasemos escogidos por el cuidado. Por lo que utilizamos una llave para encontrarla desde el array de bicis. Está bien, se ve bien. Entonces vamos a crear esa plantilla de detalles también. Por lo que llamaremos a estos detalles a HTML. Y empecemos solo por grúas, simples migas de pan. Y luego vamos a conseguir el objeto de la moto. Ahora volvamos a tirar de ese emoji de bicicleta. Y ahora porque estamos dentro de este objeto de bicicleta, sólo podemos hacer referencia a una propiedad. Entonces aquí vamos a usar nombre y poner el tipo n. y pondré su escritura blanca y su calificación aerodinámica también. Pon una foto en la parte inferior. Está bien, a mí me parece bien. Y luego vamos a indexar y más por qué esta regla. Entonces diremos controlador, tienda, control sobre detalles. Y esto se ve bien. Pero creo que hay un cambio importante que podemos hacer a este enrutamiento para que sea más preciso. Entonces sigamos adelante y miremos eso en la siguiente lección. 40. Filtración de los parámetros de la ruta: Por lo que construimos página de detalles. Y si vamos a un servidor dev, ahora podemos decir, podemos hacer clic en un análogo de bicicleta, traer detalles, y luego darnos blanco y Arrow y escribir todo lo que ponemos en una plantilla. Eso es genial. Pero hay un tema es que se supone que es una identificación numérica y sí, podría escribir un nombre aquí. Y sigue cargando la página sigue pensando que es la URL. Y eso es porque acabamos de decir id, pero no hemos dado ninguna información sobre qué identificación debería ser. Por suerte, es realmente fácil hacer eso y delgado, así que si le agregamos un colon y luego pondremos una expresión regular. En este caso, queremos dígitos de 0 a nueve y puede haber múltiples de ellos. Reintento de Sanat. Esto aún funciona cuando ponemos un número dentro. Todo eso se ve bien. Pero ahora intentemos ponerle un nombre. Y ahora obtenemos una excepción no encontrada. No se ve muy bonito, pero eso es lo que queremos. Esta URL debe ser un foro para no encontrado. Entonces eso es genial porque ahora significa que sólo se puede acceder a esta página cuando se trata de una URL genuina. Cuando estás usando el DNI. 41. Agrega la manipulación de errores de error: Entonces tenemos este filtrado ahora donde si ponemos algunos caracteres no numéricos, obtenemos esta excepción no encontrada. Pero es muy feo y no súper servicial. Ahora por suerte, flema viene con algún middleware integrado para el mantenimiento más fácil. Entonces vamos a hablar de middleware de disfraces. Eso es medio mientras creamos en el siguiente módulo. Pero en este módulo sólo vamos a usar algunos que vienen con el marco delgado. Y esto nos permite hacer mucho más bonito el manejo de errores. Entonces sigamos adelante y sumamos esto. Entonces vamos a agregar middleware era. Y vamos a decir verdad, verdad, verdad cuando se hable a través de esto en un momento. Por lo que ahora refresca la página. Obtenemos esto muy bien formateado para, para no libra era, que es mucho más bonita que la anterior, nos da todos los detalles y el rastro de pila muy bien formateado. Y esto viene con delgado. Entonces todo lo que tenemos que ver con subir esta línea, estas diferentes opciones lo permiten. Este dice si debes mostrar los detalles del error no así si vendemos a falso, vemos todo lo que obtenemos no se encuentra y no obtenemos nada de la época. No es un gran trato en un no encontrado. Pero si consideras esto también maneja 500 error del servidor está en producción. No queremos mostrar todos esos cada detalle. Solo queremos decirle al usuario que ha habido un error. En tanto que en desarrollo, podemos hacer realidad esto. Y esto nos da todos los detalles para que podamos depurarlo. Por lo que probablemente estemos cambiando esto en base a la producción, éstos a control. donde más, en cuanto al registro, el error va y puedes pasar un logotipo personalizado aquí también. Pero el principal es asegurarse de que esto se ponga en falso y en producción. Por lo que no estás mostrando tu código PHP a los usuarios si hay un error. Pero queremos que sea verdad en el desarrollo para que podamos resolver lo que está pasando. 42. Páginas de errores de Custom personalizadas: ¿ Qué sucede si en lugar de Slims controlador de errores predeterminado, quisiéramos proporcionar nuestra propia página donde podamos hacer eso usando el siempre middleware. Es un poco agitada, pero lo vamos a pasar ahora. Entonces diremos middleware era, set error handler. Y luego inhala aire. Festival dirá lo que queremos manejar. Entonces en este caso y algunos no encontraron excepción. Y luego le daremos una función para averiguar qué hacer cuando encontremos esto. Voy a querer usar nuestro contenedor también. Y luego vamos a decir Control-A. De acuerdo, entonces hablemos de lo que está pasando aquí. Entonces en el middleware ERA, estamos configurando el manejador de errores y lo estamos configurando esto. Entonces siempre que haya una excepción no encontrada, que es lo que está pasando aquí. Entonces vamos a ejecutar esta función. La función toma en un objeto de solicitud y también estamos trayendo nuestro contenedor para que cuando ejecutemos esta función, podamos crear un controlador. En este caso, es un controlador de excepciones que vamos a crear en un minuto. Y vamos a ganar el método NOT_Found. Entonces esto es justo como cablear este libro arriba para errores no encontrados. Vamos a crear manualmente alrededor del controlador. Y vamos a devolver el método NOT_Found pasando en la solicitud. Entonces sigamos adelante y creemos el controlador de excepciones y una plantilla para ello en la siguiente lección. 43. Controlador de excepción: Ahora que hemos dicho que queremos usar este controlador de excepción, tenemos que ir a crear eso. Entonces hagámoslo ahora. Entonces lo llamaremos controlador de excepciones. Es cualquier espacio de nombres de controlador de aplicaciones. Y dispara con sobre controladores. Necesitamos esta interfaz de solicitud del servidor. Pero no vamos a necesitar la respuesta porque hablaremos a través de esto en un minuto, pero normalmente conseguimos pasar la respuesta. Entonces si nos fijamos en el controlador de chop, respuesta viene aquí. Pero si vemos aquí en el manejador de errores, realidad no tenemos un objeto de respuesta pasado él. Sólo tenemos la petición. Entonces vamos a tener que crear nuestra propia respuesta. Por lo que vamos a definir clase. Y vamos a extender los controladores que podemos utilizar nuestros métodos de ayuda normales. Y luego aquí en lugar de, vamos a crear una función primer curso llamado el NOT_FOUND cuando lo definimos aquí. Entonces lo llamaremos no encontrado aquí. Y vamos a requerir una cresta. Y como no conseguimos que se pase la respuesta, aquí vamos a crear nuestra propia respuesta. Podemos hacer eso porque importamos el espacio de nombres aquí. Entonces solo vamos a crear una respuesta en blanco. Y entonces podemos pasar eso a la función de render como normal. De acuerdo, cosas preciosas. Otra cosa que tenemos que hacer es crear esa plantilla NOT_FOUND. Plantillas crit, no holandés encontrado. Sólo diré página no encontrada. Y algunos a la luz con lo siento, no pudimos encontrar esa página. Y voy a poner un enlace de vuelta a la página de inicio. Y luego traeremos ese aleteo también. De acuerdo, entonces SEP IRA manejo aquí lo hemos dicho crear un controlador de excepción. Y cuando el método NOT_FOUND, hemos creado aquí nuestro controlador de excepciones, defina el método NOT_FOUND. Hemos creado nuestra propia respuesta y le hemos dicho que renderice la plantilla NOT_FOUND. Y entonces hemos creado no se encuentran plantilla aquí. Y ahí vamos. Entonces ahora cuando se lanza un error no encontrado, se lanza esta plantilla que acabamos de crear con nuestro texto local. Y volveré al enlace de la página de inicio. 44. Cómo disparar los errores de desactivar manualmente: Ahora tenemos nuestra página de error personalizada Not Found, pero hay un escenario que creo que nos falta. Entonces sentimos las URL que hay que poner un número aquí, pero sólo hay ocho bicicletas aquí. Entonces, ¿qué pasa si me pongo, digamos 800? Vamos, esa es una URL válida porque es un número. Pero la moto no debería existir. Y sí, estoy recibiendo esto, que es el primer elemento en la matriz. Y si pongo alguno de un número en un probablemente me levante Bian Qi también porque la clave, no pueden encontrar el nombre clave. Está volviendo falso. Y si miramos lo que está haciendo nuestro código en el controlador Shock, esto volverá como falso. Y luego voy a tratar de sacar caídas esto que sólo vamos a por defecto al primer ítem que es el Bian Qi. tanto que hecho real si pones en una idea de 200, deberías conseguir un no encontrado. Entonces para hacer eso, vamos a necesitar activar manualmente una excepción HTTP no encontrada. Entonces ahí va a comprar controlador y vamos a necesitar importar eso. Entonces usemos la excepción delgada, HTTP, excepción no encontrada. Y luego aquí abajo, podemos hacer un pequeño chequeo para decir si p es falso, y haremos triples iguales para asegurarnos de que sea un booleano y no decir el número 0, que podría resolverse a falso. Si es así, lanzaremos una excepción y necesitamos pasar la solicitud y respuesta a esto. De acuerdo, entonces ahora estamos diciendo que si la clave no existe, lanza esta excepción y luego se manejará por nuestro manejo de errores. Entonces si refrescamos la página ahora, preciosa. Entonces pusimos en una idea de 200 y es que pagó no encontrado. Todavía podemos entrar en cualquiera de las bicicletas existentes y obtener los detalles. Pero si cambiamos esto por una identificación que no existe, la clave vuelve como falsa. Nosotros por nuestra excepción y se queda atrapado por el manejo de errores y muestra nuestra bonita página de errores. 45. Middleware: middleware nos permite modificar la solicitud, el entorno y la respuesta y hacer mucho procesamiento extra. Entonces si quieres manejar cosas como administración de sesiones, procesamiento de datos, manejo de errores, podemos hacer eso todo con middleware. Entonces en este módulo, vamos a escribir una aplicación de área de miembros donde se puede iniciar sesión y como, nosotros mismos, llamado número Zona. Y lo vamos a hacer trayendo algún medio de terceros donde el dinero a la sesión y escribir nuestro propio middleware para manejar la autenticación. 46. Conceptos de middleware: Echemos un vistazo a la teoría detrás del middleware hasta ahora en nuestro tipo de uso básico de la aplicación, nos llegó esta idea. Esa solicitud viene desde el navegador, digamos, una solicitud get para cortar, hola y que se mapea a una raíz en la ruta, mira la solicitud y dice, OK, vamos a enviar esta respuesta atrás. Eso dice, Aquí hay un momento apresurado dice Hola Mundo en el código. Dentro de esa ruta, el marco hace el emparejamiento para la ruta, y luego la raíz devuelve la respuesta que necesitamos, y es un sistema de entrada en salida simple. Pero qué pasa si necesitamos algo más complejo donde queremos interactuar con esa solicitud y tal vez cambiar la respuesta en base a diferentes variables o simplemente ADM o información a ella, cambiarla ligeramente, revisar alguna de la información en ella antes de pasarla a la raíz en? Esto podría ser algo que queremos hacer en cada solicitud o hacer ciertas peticiones. Bueno, la respuesta está aquí es que usamos middleware, por lo que entra la solicitud y luego pasa por una serie de middleware menos, y podemos tener este muchos desgaste medio como queremos en este pequeño diagrama que he demostrado a pieza de middleware. Entra la solicitud. Se pasa por el medio, donde abajo cada llevó a la aplicación de aplicación puede entonces hacer algo y volver a pasarlo de nuevo. Va por ese proceso y eventualmente llega a la respuesta. Por lo que es una oportunidad para que intervengamos en el ciclo de vida de esa solicitud y respuesta sin el código tenga que mentir en la ruta misma. 47. Zona: Poco de preparación para este módulo. Por lo que ahora en proyectos seis. Y si entramos en público, algunos estilos actualizados, podemos copiar y pegar aquí. Y también puedes copiar sobre la cabeza a plantilla. O puedes simplemente entrar aquí y actualizar los números. Voy a llamarlo miembros. Yo soy eso es todo lo que necesitamos para empezar con este proyecto. 48. Páginas de acceso seguro y de acceso y acceso de acceso: Adelante y empecemos grúas algunas páginas básicas para zona miembro. Por lo que vamos a crear un controlador llamado off controller. Dado el espacio de nombres estándar. Traer en la solicitud y respuesta. Y sé que call it off controller extiende Controller como de costumbre. Y crearemos un método llamado login. Llame a la penalización de inicio de sesión plantilla por ahora. Y luego vamos a copiar y pegar esto y crear uno llamado Controlador seguro. Por lo que esta será nuestra área de socios reales. Y llamaremos a este método predeterminado, y renderizaremos una plantilla llamada default también. Sigamos adelante y nos ocupemos de estas plantillas. Por lo que llamamos a este uno login dot HTML, trayendo el aleteo al final. De acuerdo, eso se ve bien para la plantilla de inicio de sesión. Entonces vamos a crear plantilla no predeterminada, que será la matriz a la que llegue cuando esté conectado. Clot por defecto dot HTML. Yo quiero decir algo como bienvenida, bienvenido al área de miembros. De acuerdo, y luego vamos a cablear estas raíces arriba. Slash r2 y más. Por qué esto hasta el inicio de sesión. Entonces va a usar el cualquier verbo porque vas a poder publicar a esto en algún momento. De lo que se puede publicar en ella. Ahora la forma no va a hacer nada, pero podrías hacer. Y llamemos a slash secure. Y va a ir a controlador seguro y lo llamamos por defecto. Está bien. Consigamos desarrollos siempre permanentes. Y veamos qué pasa aquí. Está bien. Sí. Entonces tengo mi formulario de inicio de sesión y si voy a asegurar, tengo mi página de bienvenida. Entonces tenemos las páginas fuera. Obviamente, ahora hay Protection y su sistema de inicio de sesión por el momento, pero tenemos algunos buenos andamios para empezar. 49. middleware de sesión: Para gestionar esta sesión, vamos a necesitar algún tipo de biblioteca de manejo de sesiones. En este caso, voy a usar este llamado slim session. Entonces podemos seguir adelante e instalar que permita servidor de dev consejo y vamos a hacer un compositor requieren deletrearlo correctamente. Lo averiguaremos muy rápidamente. Por lo que sólo dejaremos que compositor haga lo suyo aquí para instalar el middleware, que sólo debería tomar un par de segundos. Y luego volveremos a nuestra página de índice e instalaremos. Está bien, bien. Entonces sí, tenemos eso. Y si buscamos componer un archivo ahí está. Perfecto. Enfriar. Entonces vamos a instalar esto como un servicio. Y vamos a necesitar agregarlo como middleware. Bueno, así que sigamos adelante y hagamos eso. Entonces en nuestro archivo de índice, digamos contener una sesión fija. Y le daremos una función aquí como de costumbre. Y todo lo que vamos a hacer aquí es volver nueva sesión delgada, cómo PKA. Y luego necesitamos agregar el middleware también. Entonces lo haremos aquí. De acuerdo, hablemos de lo que está pasando por aquí. Entonces aquí estamos instalando el middleware, que es lo que necesitamos para que funcione. Pero también queremos que la sección esté disponible en nuestro contenedor de inyección de dependencia, ahí también, una vez que lo hayamos hecho, lo vamos a instalar como servicio aquí también. Para que luego podamos usarlo en nuestro controlador. Entonces si solo tenemos que desmontar el controlador y la parte superior de hey, vamos a hacer eco de algo. Por lo que vamos a agregar contenedor de inyección de dependencia. No podemos servicio de sesión. Y conseguiremos el conteo. Y aquí vamos a implementar una cuenta también. Entonces de nuevo, tenemos el servicio de sesión. Por lo que esto debería tener cruz realmente ser despedido porque queremos establecer el conteo para que sea igual a contar más uno. Ahora si vamos a aquí en nuestra página de inicio de sesión y nos refrescamos, vemos los servicios de sesión funcionando porque cada vez se está incrementando este número. 50. Ingresar y salir: Ahora que tenemos servicio de adhesión, sigamos adelante y lo usemos. Entonces comentaremos este código que hemos creado aquí. Y luego manejaremos el usuario enviando el formulario. Entonces diremos que la solicitud es post helper métodos que viene en comprobaciones HTTP delgadas si se está publicando la solicitud. Y si es así, seguiremos adelante y conseguiremos el servicio de sesión. Y estableceremos el usuario TB, la dirección de correo electrónico. Entonces en el mundo real, obviamente comprobaríamos esto con un usuario válido. Pero por aquí, vamos a creerles que su dirección de correo electrónico es legítima. Y vamos a usar un método de ayuda nova aquí porque queremos enviarlos al área de miembros. Entonces haremos redireccionamiento de respuesta y los redireccionaremos a seguros, vamos a devolver eso. Entonces ahora si usamos un post algo, guardará esa dirección de correo electrónico a la sesión y este uso de variable y los leerá. Incluso lo que queremos hacer es agregar un método de logout. Y aquí de nuevo, obtenemos el servicio de sesión. Y en lugar de un tiempo de Atlas Gauss, vamos a eliminar porque queremos eliminar estas variables. Y volverá a devolver respuesta usando el método de lectura solo a la barras, que los llevará de vuelta a la página de inicio de sesión. Y luego vamos a entrar en index.js, HP y ¿por qué esto también? Slash logout. Y una vez que se baja el controlador en el método se llama logout super. Por lo que probablemente también queremos decirles que no se han conectado y darles mucho enlace de logout. Entonces sigamos adelante y hagamos eso en la siguiente lección. 51. Reproducción de tu nombre de usuario: Los usuarios ya pueden iniciar sesión, pero idealmente necesitamos decirle que iniciaron sesión. Entonces si abrimos controlador seguro aquí y vamos a pasar algunos datos aquí. Entonces cuando obtengas el nombre de usuario, así obtenemos un servicio de sesión se obtendrá un uso de variable a partir de eso. Y luego si abrimos por defecto, podemos decir algo como que estás conectado como usuario. Y también les voy a dar un enlace de cierre de sesión. Ok. Agradable. Entonces sigamos adelante y iniciaré sesión. Y eso podemos ver que hemos reproducido a Chris en example.com. Está bien, encantadora. Y tenemos enlace de cierre de sesión también, por lo que puedo hacer clic en eso. Y eso me envía de vuelta a la pantalla de inicio de sesión. Entonces eso se ve bien en el único problema es que podría simplemente escribir manualmente en slash secure. Y no estoy hasta que iniciaron sesión, podemos ver las direcciones de correo en blanco aquí, pero no me ha impedido llegar a esta página. Entonces lo siguiente es que necesitamos realmente banco esta página privada. 52. Middleware personalizado: Tenemos este sistema de inicio de sesión semi funcional donde puede iniciar sesión, pero también puedes simplemente escribir la URL directamente. Ahora, hay algunas cosas que podríamos hacer con eso. Por ejemplo, podríamos entrar manualmente aquí y podríamos decir, obtenemos la sesión. Y podríamos conseguir al usuario. Y podríamos decir, si no, entonces devolver una respuesta. Hemos redireccionado a la página de inicio de sesión, algo así. Y podríamos hacer eso en cada método. Pero eso sería un poco doloroso porque tendríamos que recordar hacerlo en cada método. Y si nos olvidamos, potencialmente casaríamos una página privada hizo fuera del mundo. Entonces una mejor manera de hacerlo es con algún middleware personalizado. Y vamos a pasar por la puesta en marcha ahora. Por lo que va a estar en nuestra app. Y lo vamos a llamar autenticar punto PHP. Y voy a crear una nueva carpeta aquí llamada middleware. Y entonces vamos a necesitar traer algunas cosas. Y vamos a crear una clase llamada autenticar variable privada llamada sesión. Y vamos a tomar el servicio de sesión N como parámetro y simplemente guardarlo en esta variable de instancia. Y esto es un poco mientras vamos a limitar un rato. Entonces vamos a usar una función mágica. Vamos pop hit a ser llamado invoke to run cuando se invoca la clase. Y tomaré una solicitud y el manejador de solicitudes. Y entonces diremos: OK, tenemos nuestro servicio de sesiones. Y diremos que existe la variable de uso. Y si sigue con la solicitud. Por lo que podemos decirle al manejador de solicitudes que siga manejando esta solicitud porque sabemos que la variable de usuario existe y por lo tanto el usuario está conectado si no existe. Y vamos a entrar en el poco solicitado diciendo manejar la solicitud con un redireccionamiento a la página de inicio de sesión. Por lo que cuando llegue la solicitud, este middleware se ejecutará. Y dirá, es el uso una variable que si se continúa, la solicitud es normal. Si no lo es, entonces redirecciona cambiar la solicitud para que sea un redireccionamiento a la pantalla de inicio de sesión. Entonces sigamos adelante y cableemos esta clase en la siguiente lección. 53. La ruta de la middleware: Sigamos adelante y conectemos nuestro middleware personalizado. Entonces tenemos que asegurarnos aquí. Yo sólo voy a mover esto hacia abajo. Y aquí añadimos algún middleware personalizado a toda la aplicación. Pero aquí sólo queremos que este middleware se ejecute cuando estén en la URL segura. Entonces voy a seguir adelante donde estamos llamando a la definición de la ruta. Voy a añadir, jaja, voy a llamar al método add. Y vamos a llamar a la clase autenticada. Está bien, genial. Y entonces por supuesto necesitamos pasar la sesión a eso. Entonces vamos a decir apt-get container get session. Entonces así como lo instalamos aquí, también hemos instalado un cabello. Y ahora si actualizamos la página, nos envían de vuelta a la pantalla de inicio de sesión. Entonces cada vez que intentamos escribir la URL, el middleware inicia, entra aquí, dice que el usuario no existe, así que no continúes. El pedido es normal, envíalos a la pantalla de inicio de sesión. Entonces podemos seguir adelante aquí y podemos teclear la dirección de correo electrónico e iniciar sesión. Y vemos que lo tenemos ahí. Entonces de nuevo, ahora está funcionando porque el usuario sí existe y así no necesita interrumpir la solicitud. Obtener este middleware sólo se ejecutará en esta ruta con el momento porque es cuando lo hemos agregado a. Si cerramos sesión e intentamos volver a teclearlo, nos encontramos paquete. Las pantallas de inicio de sesión son geniales. Ahora contamos con un sistema de inicio de sesión de trabajo totalmente protegido. 54. Grupos de la ruta: ¿ Qué pasa si quisiéramos más de una página? Entonces en el momento en que acabamos de agregar esa, ruta, una página segura aquí, pero quizá queramos agregar más. Digamos que queremos página de estado. Entonces vayamos al controlador seguro y solo creemos lat. Entonces lo llamaremos status. Y tomaremos nuestra petición y respuesta habitual. Y acabaremos de ejecutar la página realmente básica aquí. Y luego vamos a seguir adelante y crear una página de estado también plantilla. Y me limitaré a decir que tu membresía está actualizada. Y tenemos que cablear esto. Y podríamos volver a instalar el middleware personalizado en esa habitación separada. Pero eso sería súper desordenado. Por lo que una forma mucho más limpia es que podemos usar un grupo de raíces. Solo comentemos esto. Y en su lugar aquí, y diremos app. Crearemos un grupo slash la QA. Porque todas nuestras URL van a empezar con seguridad slash. En realidad podrías hacer esto vacío si quisieras tener un grupo con URLs completamente diferentes. Pero en este caso todos van a estar aquí. Y ahí está el IB AP. Y entonces aquí vamos a definir nuestras rutas. Entonces si eres seguro de slash, entonces queremos ir a la página predeterminada. Al igual que antes. Voy a crear una nueva página. Y luego otra vez como antes, queremos instalar el middleware. Por lo que sólo podemos tomar esa forma aquí. Entonces, ¿qué está pasando aquí? Bueno, definimos dos raíces también. Es como jaja. Pero los hemos puesto dentro de esta zona asegurada de slash. Eso significa que si estás seguro de slash y nada más, va a ir aquí. Y si slash status de slash seguro, entonces nos llevará a la página de estado. Y para ambos, estamos instalando nuestro grupo de middleware personalizado. Entonces intentemos refrescar el cabello y lo he visto funcionar. Consigamos un estatus. Sí. Y luego vamos a widgets. Abro una ventana, no estamos encerrados. Nos enviaron a la página de inicio de sesión. Ok, brillante. Entonces esto podría, si lo necesitas completamente URLs, podríamos dejar eso en blanco y podríamos hacer algo así. Y eso funcionaría bien. Pero como todas las URL están agrupadas, bien podríamos simplemente poner slash trickier aquí y luego extender todas nuestras raíces aquí. Entonces tenemos el espacio en blanco, tenemos el estado de slash. Y luego podemos instalar middleware de autenticación personalizada en todas estas raíces a la vez, todo en el grupo, para que todas estas áreas estén protegidas por el sistema de inicio de sesión. 55. Reflexiones finales: Enhorabuena por llegar a fin de esta clase sobre Slim. Ahora tienes una introducción a los micro frameworks. Entiendes cómo funciona delgado en términos de controladores de enraizamiento nunca reportando middleware y más en Esperemos que construyeras tus 1er 6 proyectos. Comparte tus proyectos con el grupo incluso compartiendo el código fuente. O como sea que los desearas fuera en la sección de proyectos. Si has disfrutado de este yeso y por favor deja una reseña sobre lo que estés pasando a continuación, disparamos la mejor de las suertes.