Microframeworks PHP avec Slim | Chris Worfolk | Skillshare

Vitesse de lecture


1.0x


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

Microframeworks PHP avec Slim

teacher avatar Chris Worfolk

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      1:23

    • 2.

      Qu'est-

      3:45

    • 3.

      Notre première application

      0:18

    • 4.

      Router des concepts

      1:24

    • 5.

      Installer des dépendances

      2:25

    • 6.

      Notre première page

      2:53

    • 7.

      Exécution du projet

      1:10

    • 8.

      Itinéraires

      0:56

    • 9.

      Paramètres de route

      2:48

    • 10.

      Services

      0:28

    • 11.

      Indépendance

      2:44

    • 12.

      Installer un DIC

      2:07

    • 13.

      Installer une bibliothèque de modèle

      0:59

    • 14.

      Configurer la DIC

      3:06

    • 15.

      Utiliser le service de modèle

      1:45

    • 16.

      Créer un modèle

      0:49

    • 17.

      Rendre une page

      0:56

    • 18.

      Contrôles

      0:32

    • 19.

      Créer un contrôleur

      3:10

    • 20.

      Créer des modèles

      1:58

    • 21.

      Autoloading

      1:46

    • 22.

      Router à un contrôleur

      1:00

    • 23.

      Tester le contrôleur

      0:28

    • 24.

      Contrôles abstrait abstrait

      3:38

    • 25.

      Tester le contrôleur abstrait

      1:12

    • 26.

      Demandes et réponse

      0:30

    • 27.

      Enregistrement de rocen

      0:50

    • 28.

      Créer la page d'accueil

      3:40

    • 29.

      Recherche avec des fins d'application

      3:17

    • 30.

      Exécution d'une recherche

      0:50

    • 31.

      submissions de forme

      2:04

    • 32.

      Slim HTTP

      2:37

    • 33.

      Réponses JSON

      1:41

    • 34.

      Codet des codes de réponse

      1:50

    • 35.

      Manier des erreurs

      0:29

    • 36.

      Magasin de vélo

      0:41

    • 37.

      Page d'accueil des vélos

      2:59

    • 38.

      Tester la page d'accueil

      0:36

    • 39.

      Détails de la page

      3:25

    • 40.

      Filtrer les paramètres de route

      1:16

    • 41.

      Ajouter des erreurs

      2:08

    • 42.

      Pages d'erreur personnalisées

      2:10

    • 43.

      Contrôleur d'exception

      3:01

    • 44.

      triggering des erreurs de triggering la commande

      2:19

    • 45.

      Middleware

      0:35

    • 46.

      concepts Middleware

      1:41

    • 47.

      Zone membre

      0:27

    • 48.

      Sécuriser et et loger

      4:21

    • 49.

      Middleware de session

      3:17

    • 50.

      Se connecter et sortir

      2:14

    • 51.

      Jouer le nom d'utilisateur

      1:24

    • 52.

      Middleware personnalisé

      3:23

    • 53.

      Middleware de Route

      1:45

    • 54.

      Groupes de route

      3:55

    • 55.

      Réflexions finales

      0:48

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

82

apprenants

1

projets

À propos de ce cours

Apprenez le meilleur microframework PHP : Slim. Les versions délimitée des cadres permettent de cut-down rapidement et de personnaliser vos besoins. Dans ce cours, nous passerons par étape Slim de la création de votre premier site Web à l'exploration des requêtes. JSON, middleware, l'authentification et bien plus encore.

à la fin de ce cours, vous aurez construit vos six premières applications Web dans Slim, notamment un système de connexion des membres, un catalogue de produits e-commerce et une des données de la musique de la recherche de la musique de la part.

Rencontrez votre enseignant·e

Teacher Profile Image

Chris Worfolk

Enseignant·e

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

Voir le profil complet

Compétences associées

Développement Langages de programmation PHP
Level: Beginner

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Bonjour et bienvenue à ce cours sur PHP. Microphone fonctionne en utilisant Slim si vous êtes tout nouveau à Petri et Michael frameworks et super , parce que nous allons commencer de bas en haut. Donc, nous commençons vraiment avec les bases et construisons une application vraiment simple en direct et ensuite passer à l'échelle que pour des utilisations plus avancées. Si vous êtes une chienne existante, soyez déjà développeur familier avec plus de frameworks, puis merveilleux. Vous allez adorer Slim parce que c'est super simple, vraiment facile de commencer, mais elle évolue incroyablement bien. Donc, si vous voulez construire des applications plus grandes, j'ai construit des applications plus grandes, y compris des magasins de commerce électronique, des systèmes de gestion de contenu complexes, desbases de données de gestion de la clientèle, bases de données de gestion de la clientèle, tout ce qui est mince échelles. Vraiment bien, donc ça commence simple et devient magnifiquement plus grand et aidera. Donc je pense vraiment que tu vas adorer. Une fois que vous obtenez Teoh, vous mince, vous ne verrez probablement pas la nécessité d'utiliser sur les frameworks car cela fait presque tout dont vous avez besoin. Je suis Chris. J' ai Bean, un consultant en logiciels. Depuis plus de 15 ans. J' ai travaillé pour des multinationales pour des startups. J' adore la programmation, et Slim est mon cadre préféré personnel de choix. J' ai hâte de t'apprendre ça. Commençons 2. Qu'est-: dans cette leçon va examiner ce qu'est un travail de microphone. Cela pourrait aider si nous commençons par regarder ce qu'est un framework parce que nous pourrions commencer à construire chaque site web à partir de zéro en faisant tout nous-mêmes, gérant la demande sur la réponse et tout le routage et le template ing. Mais, ah, beaucoup de choses sont partagées sur toutes les applications web. Fondamentalement, chaque application web va avoir besoin d'une sorte de système de dire, ok, ce que vous êtes bien, c'est l'utilisateur qui demande et où nous allons les envoyer à ce que nous allons faire quand ils font cette demande ? Et donc aux épargnants d'avoir à faire que les gens sont venus avec des cadres. Andi. Ils font des choses comme le routage de pré-traitement, le retour de la requête résultat, la gestion de toutes les dépendances, avoir une sorte de modèle ing système de gestion des variables de session. Et il y a un tas de cadres populaires à leur symphonie sur DLA. Ravel est la fin utilisé pour être plus populaire. Elle a été refusée récemment. Gâteau d'allumage code, ph. B. Tous ces éléments viennent avec un torrent toutes les fonctionnalités pour rendre notre vie beaucoup plus facile. Mais ils sont souvent gros et encombrants, et ils nous donnent toutes ces fonctionnalités hors de la boîte et peut-être que nous en voulons une partie, mais nous ne voulons pas en plus. Nous avons nos préférences personnelles pour la façon dont nous voulons faire la gestion de gabarit ou de session ou ces gits doivent avoir jeté cela, ce qui ralentit un sens. Nous devons faire une charge, amorcer et écrire un code initial et ces gros contrôleurs que nous ne voulons pas vraiment faire. Et nous voulons juste quelque chose de super simple pour la prochaine génération de choses qui sont sortis sur les micro-frameworks, ce qui en a enlevé beaucoup. Ils ont dit OK, le composant de base de rial voit est fondamentalement le Reuss ing et quelques autres choses sur. Tant que nous pouvons le faire, nous voulons que les choses restent très simples. Nous voulons que les gens à L écrivent une application Web à un fichier où ils peuvent dire OK, si un utilisateur va à cette route, puis retourner cette réponse très populaire avec les yeux AP, par exemple, nous n'avons pas besoin de tout ce gros, gestion de session complexe et modèle ing beaucoup de temps, et donc il a vraiment eu des condamnations jusqu'à ce cadre super simple. Cela signifiait que les semaines de microphone ou beaucoup plus rapide et plus facile à configurer comme nous avons discuté que vous pouvez souvent faire dans fichier chaud voudra probablement en utiliser plus pour le rendre plus propre et juste plus facile à gérer. Mais on pourrait tout mettre dans un seul dossier si on le voulait. Ils ont tendance à venir avec la dernière fonctionnalité groupée, donc comme nous le verrons avec Slim, il ne vient pas. Nous avons tout type de moteur de base de données ou de moteur de gabarit, mais il est assez facile d'en brancher un, sorte que si nous voulons le faire, nous le pouvons. Andi, ils sont souvent très bien à l'échelle, donc les gens pensent parfois que le microphone ne fonctionne que pour les sites Web avec quelques pages, mais en fait particulièrement mince avec la puissance qu'il a, vous pouvez écrire une application Web complète avec des choses complexes comme l'authentification sur et la logique métier complexe, et il peut en fait. Tout s'intègre à l'intérieur. Slim s'adaptera, et vous devez aller chercher ces services vous-même. Mais ils se branchent très bien dans de sorte que les travaux de microphone sont dans un outil incroyablement puissant en ce que vous pouvez démarrer très simple et construire des applications Web assez complexes, tout comme vous pouvez avec un cadre plus grand, mais avec beaucoup plus personnalisable et juste beaucoup plus facile de commencer et plus rapide 3. Notre première application: dans ce module. Nous allons écrire notre première application Web en slim, et ce sera le monde du bonjour classique. Donc rien de super excitant, mais il montrera est les fondations. Et à quel point est-il facile d'écrire une application mince avant de passer à des projets plus substantiels ? 4. Router des concepts: Regardons brièvement la théorie derrière l'enracinement. Donc essentiellement, nous allons créer ah, application Web basée sur le travail du microphone sur, nous allons regarder signer un tas de routes vers elle. Dans le cas de Slim, c'est simplement en appelant une fonction basée sur le verbe que nous voulons, puis en passant un u r l et un rappel. Donc, par exemple, si nous voulons obtenir une requête, qui est la norme get post put dilate dans ce cas, la plupart de nos demandes vont obtenir peut-être un cast postal et donc nous allons appeler la méthode get sur l'application lui transmettra la chaîne que nous voulions correspondre. Donc, si vous êtes une page flash deux, nous voulions lire cette fonction. Si vous êtes le u r L. Slash payé gratuitement, alors nous voulions acheminer vers la fonction argent sur le deuxième paramètre que nous allons passer est dire travail de téléphone mince. Que devrions-nous faire quand nous correspondons à ce u r l Donc cela pourrait être une fonction anonyme ? Pourrait juste Ou il pourrait être une fonction nommée, une classe de contrôleur qui explorera plus tard dans le cours. Mais fondamentalement, nous allons définir l'itinéraire en nous disant ce qu'il veut cartographier et ensuite ce que nous voulons que le framework fasse quand il obtient cette correspondance. 5. Installer des dépendances: La première chose que nous allons faire est d'installer les dépendances en utilisant le gestionnaire de dépendances PHP, compositeur. Donc, pour ce faire, nous allons venir ici au terminal ou à l'invite de commande si vous êtes sur Windows. Et nous allons dire compositeur et nous allons exiger, et nous allons avoir besoin de quelques bibliothèques ici. Nous allons donc avoir besoin de la bibliothèque mince principale. Nous allons aussi avoir besoin d'un PSR sept pointillés, et d'un HTTP mince. Techniquement, tu pourrais le faire sans ça. Et si vous le vouliez, vous pourriez simplement apporter Slim Dash Slim, et vous pourriez apporter vos propres bibliothèques HTTP et PSR sept. Mais dans la pratique, nous ne voulons jamais le faire. Nous voulons toujours faire entrer ces bibliothèques parce qu'elles fonctionnent très bien avec slim. Donc, ce n'est que si vous disiez, migrer un projet hérité, je devais avoir mon mot à dire et la bibliothèque PSR sept que vous auriez besoin de le faire dans la pratique. On peut les amener à chaque fois. Donc, nous allons juste laisser les compositeurs filer et télécharger tout ce dont nous avons besoin. Ok, ça a l'air super. Cool. Donc, il est téléchargé toutes ces dépendances. Et si nous allons dans notre projet, et maintenant nous pouvons dire que nous avons ce fichier de compositeur généré avec les bibliothèques que nous avons demandées. Ensuite, nous avons aussi ce compositeur dot loc. C' est celui qui indique au compositeur quelles bibliothèques nous avons téléchargées, y compris toutes les dépendances. Vous ne modifieriez donc jamais ce fichier. Nous n'aurions lu qu'un compositeur JSON. Celle-ci est générée automatiquement par le compositeur. Et puis nous avons également le fichier fournisseur, qui contient toutes les dépendances elles-mêmes. Maintenant, si nous avons tout fait pour obtenir cela inclurait notre dossier fournisseur et nous voulons le composer, téléchargez-le chaque fois que nous l'installons sur un nouvel ordinateur. Donc, continuons et créons un fichier gitignore pour cela dans une minute, qui est dans le point racine git ignorer. Si vous n'allez pas utiliser get, cela n'a pas trop d'importance. Mais si c'est le cas, vous êtes probablement familier avec gitignore et nous allons juste lui dire d'ignorer le répertoire des fournisseurs. Donc ici, nous avons téléchargé nos dépendances et nous devrions être prêts à commencer le codage. 6. Notre première page: Nous avons installé toutes les dépendances dont nous avons besoin. Alors maintenant, allons de l'avant et créons notre première page. Nous allons donc créer un nouveau fichier PHP. Et nous allons appeler ce index.html HP. Je vais créer un nouveau répertoire appelé public et l'enregistrer dans ça. Et puis nous allons devoir apporter quelques choses. Nous allons donc charger dans certains espaces de noms. Oui. Je vais avoir besoin de l'interface de réponse. Chargez la réponse initiale. Et puis et nous ferons la même chose l'interface de requête. Et je suis aussi amené dans l'usine mince. Et puis nous voulons aussi charger dans toutes nos dépendances et les composer. Il est vraiment facile de le faire en utilisant simplement le chargement automatique. Et ensuite, on va aller de l'avant et on s'emballe. Donc, nous allons l'appeler application. Et nous allons demander à l'usine d'application et appeler la méthode create ou non. Et puis nous définirons notre premier taux. Donc, nous allons appeler la méthode get car cela peut être une requête GET. Et nous allons juste le faire slash pour l'instant. Et puis nous pouvons définir une fonction pour dire, ok, si vous correspondez à cette route slash, cette homebrew exécuter cette fonction. Et nous allons prendre en compte la demande et la réponse comme paramètres. Et à l'intérieur, on va dire que la réponse est corps. Et nous allons écrire un texte. Alors faisons un Hello World pour l'instant. Et puis nous vous retournerons la réponse. Une fois que nous avons défini nos racines, nous pouvons appeler la commande Exécuter. Alors passons par ce qu'on fait ici. Hey, nous chargeons dans des espaces de noms et des paquets. Nous nous assurons ensuite d'inclure toutes les dépendances que nous avons installées via compositeur. Nous créons notre application ici en utilisant slims app factory create méthode. Et puis nous définissons nos racines. Et nous disons que si quelque chose correspond à la barre oblique, donc la page d'accueil exécute cette fonction. Et cette fonction va écrire bonjour monde à la réponse, puis envoyer cette réponse au navigateur. Et puis une fois que nous avons fini de construire tout pour l'application, nous appelons la méthode run pour dire slim, hey, maintenant c'est prêt. Et vous pouvez aller de l'avant et exécuter l'application. 7. Exécution du projet: Nous avons écrit notre première racine, alors continuons-la et voyons si ça marche. Donc, nous reviendrons au terminal ou à l'invite de commande. Et nous voulons aller dans ce répertoire public, ce qui va être la racine web de notre application. Donc, tout notre code sera conservé en dehors des racines Web. Si quelque chose s'est mal passé, nous allons exposer notre code, mais ce bit sera public. Et nous pouvons utiliser PHP est serveur de développement interne pour cela. Donc, nous pouvons taper PHP dash S, et ensuite nous allons lui demander d'exécuter un serveur web sur localhost deux-points 8 mille. Et super. C' est opérationnel. Donc maintenant, nous pouvons aller au navigateur et il suffit de taper localhost 8 mille. Et on y va. Nous avons notre HelloWorld qui fonctionne dans un navigateur. Donc, nous avons créé notre petit slash de cheveux de racine Bonjour monde. Nous avons exécuté PHP est un serveur de développement local et cela a fonctionné. Pas terriblement utile, mais vous avez maintenant écrit avec succès votre première application en mince. Maintenant que nous avons ça en cours, allons de l'avant et faisons quelque chose de plus intéressant. 8. Itinéraires: Maintenant, nous avons notre premier itinéraire. Allons-y et ajoutez-en une seconde. Et cette fois, faisons quelque chose d'un peu plus intéressant qu'une barre oblique. Disons que Jane est la racine. Et encore une fois, nous allons définir une fermeture, une fonction anonyme. Et on a encore un corps. Et cette fois nous dirons, bonjour Jane. Et puis nous retournerons la réponse. Cela ressemble à la ligne supérieure, sauf que cette fois on nous donne une route de barre oblique bonjour Jane. Ajoutons un point-virgule là. Et maintenant, si on retourne vers lui, on va faire une barre oblique bonjour, flash Jane. On pourrait refaire racine, Parfait. 9. Paramètres de route: Donc, c'est un peu utile. Nous sommes maintenant en mesure de définir différents itinéraires. Mais la plupart du temps lorsque vous travaillez avec PHP, nous voulons que ces racines soient dynamiques. Nous voulons être en mesure de passer dire, une variable et peut-être c'est l'URL d'un billet de blog. Ce que nous pouvons faire en utilisant des paramètres. Donc encore une fois, définissons une requête get. Et cette fois, on va dire bonjour. Et je vais mettre son nom dans des accolades, ce qui dit à Slim que c'est un paramètre. Et puis nous définirons à nouveau la fonction. Et cette fois, je vais demander un troisième, qui est un tableau appelé 4xh. Et cela nous donnera les arguments, qui dans ce cas ce sont les paramètres sacrifiant le nom ici. Et on va capitaliser ça. Et puis je vais accéder au tableau d'arguments et retirer le nom. Donc, quoi que quelqu'un mette dans l'URL ici, disons que vous pourriez faire barre oblique bonjour slash Chris. Ensuite, cela sera passé à travers le tableau 4xh. Et nous allons la capitaliser ici et être en mesure d'y accéder. Alors écrivons ça dans votre réponse. Reprenons le corps. Utilisons. Alors on va dire Bonjour, passe un nom. Et puis nous retournerons la réponse comme d'habitude. Et je vais devoir fermer. Donc, nous pouvons maintenant passer n'importe quelle chaîne ici, n'importe quelle variable utilisant l'URL, et il atteindra cette fonction. Alors essayons ça. Et nous manquons parce que j'ai ajouté un supplément que nous allons nous avons bonjour Chris, parfait. Et je pourrais changer ça ou je pourrais dire bonjour Sam. Et les indices abandonnent à Jane. Mais si on va voir Jane, ça va toujours être radié parce que ça va tomber en cascade dans les racines. Mais si ça ne correspond à aucun de ces éléments, nous ne pouvons pas. Le joker de Dick ici, où on peut juste passer n'importe quoi. Il est pris que le paramètre name passe ici dans le tableau ici, et nous sortons le tableau et nous pouvons faire ce que nous voulons avec la fonction. Dans ce cas, nous l'écrivons simplement sur cette chaîne. 10. Services: dans ce module, nous allons examiner l'injection de dépendance. Avec n'importe quel Web, vous avez probablement un tas de services tels que les connexions à des bases de données, e-mails de gestion sexuelle auxquels vous voulez vous connecter et être en mesure d'apporter. Et comment gérer toutes ces dépendances ? Eh bien, Slim n'a pas de conteneur d'injection de dépendance intégré, mais il rend vraiment facile d'en importer un. Donc, dans ce module, nous allons faire des sauts et configurer certains services. 11. Indépendance: Commençons ce module en regardant une partie de la théorie derrière l'injection de dépendance. Donc, si vous avez une application Web et que vous avez probablement besoin d'un tas de services, il y a une base de données à laquelle vous voudrez peut-être vous connecter. Vous voulez rendre certains modèles, peut-être déteste le courrier électronique. Vous voulez gérer une sorte de données de session, et peut-être que vous voulez envoyer des e-mails transactionnels ou mettre des gens dans une sorte de fournisseur de messagerie comme mail chimpi. Il y a toute cette dépendance externe, c'est avec laquelle vous voulez travailler. Maintenant. Comment pouvons-nous nous assurer, par exemple, si nous voulons avoir une connexion à une base de données ? Est-ce que chaque classe a sa propre connexion à la base de données qui est horriblement inefficace ? Et donc à l'époque, on utilisait le modèle singleton. Si vous êtes assez vieux pour vous rappeler que Andi, chaque fois que vous vouliez utiliser la base de données, vous devrez appeler la méthode get instance, et cela signifierait que nous pourrions vous ne créer qu'une seule connexion à la base de données. Et c'était horrible parce qu'il était tout simplement impossible de tester l'unité était le gros problème sur DSO . Nous sommes passés à la solution où nous avons commencé à injecter des dépendances. Donc, lorsque vous créez une classe telle que ce contrôleur, vous passeriez dans l'instance de base de données afin que lorsque nous la testons unitaires, nous puissions passer une simulation là-dedans qui nous permettrait de faire tous les tests dont nous avions besoin. C' est bon, mais ça veut dire que tu as besoin de Teoh. Avoir toutes vos dépendances injectées dans la classe. Donc, chaque fois que vous écrivez une nouvelle classe, un tel contrôleur, vous devez passer tout ce dont vous avez besoin. Et ça pourrait être beaucoup de choses. Dans une grande application Web, il y avait beaucoup de services, donc le nouveau modèle est d'utiliser ce qu'on appelle un conteneur et dans un conteneur, il sait comment accéder à tous les services dont vous avez besoin. Donc, par exemple, dans ce code ici, nous créons un conteneur sur étaient l'enregistrement d'un service de base de données sur disaient, Si quelqu'un veut une base de données, voici la classe dont vous avez besoin. Voici comment vous Winston elle détestait vous créer sa classe de base de données et un intérieur de wrap. Nous pouvons parler au conteneur d'injection de dépendance et dire, OK, OK, donnez-moi la base de données, et seulement quand nous appelons ce service qu'il contient il y a et puis crée l'instance hors de la base de données, mais nous ne besoin de pré-enregistrer cela dans la classe. On peut juste commencer à coder et dire, OK, OK, nous devons faire une base de données sur notre conteneur d'injection de dépendance. Notre service Lehrer sait comment se lever pour nous. 12. Installer un DIC: Slim ne contient plus un conteneur d'injection de dépendance utilisé pour venir fourni avec 1 bit. Les nouvelles évasions du doute mince. Donc si on veut un jour, on va devoir y aller et en installer un. Donc c'est assez facile, ce qui est ici dans notre terminal. Et revenons à notre projet. Et on va le demander. Donc, nous allons dire le composer, exiger le tiret PHP, le tiret d pi. Il s'agit donc d'un conteneur d'injection de dépendance tiers. C' est le plus populaire en PHP, donc il va bien faire, va composer un aller de l'avant et installer cela. Maintenant. Je prendrai juste quelques secondes. Et il téléchargera toutes les dépendances. Php DI a besoin. Super, donc c'est fait. Et si nous jetons un coup d'oeil dans notre dossier fournisseur, nous avons PID P d i dedans. Super. Donc, nous sommes dans un fichier d'index et nous pouvons mettre en place nos contaminants d'injection de dépendance. Donc, nous allons apporter un espace de noms important. Et puis juste en dessous où nous avons apporté nos dépendances, nous allons de l'avant et créer un conteneur. Nous voulons le faire avant de créer notre application. Donc nous allons créer un conteneur et ensuite nous dirons à Slim que nous voulons utiliser ce conteneur. Donc, nous sommes dans une usine. C' est là que nous créons sont minces. Mais avant que nous ayons fait cela, nous avons créé cette injection de dépendance contenant une paire. Et nous avons mis, dit à l'usine AP que lorsque nous créons une application, nous voulions utiliser ce conteneur. Et donc quand il crée le up-down ici, il utilise déjà ceci, ce qui est génial. Évidemment, il n'y a rien dans notre conteneur d'injection de dépendance en ce moment, mais il est configuré prêt à l'emploi de sorte que lorsque nous avons des dépendances, nous voulons injecter dans l'application, certains services, nous pouvons le faire. Alors faisons-le dans la prochaine leçon. 13. Installer une bibliothèque de modèle: Donc, dans le projet original, nous venons d'obtenir la réponse et nous y avons écrit du HTML brut. n'y a pas de balises HTML réelles dans les habitats où nous faisons un Widgets invitant des balises HTML brutes. Et ce serait plus agréable si nous avions une sorte de moteur de modélisation ou de moteur de vue qui pourrait le faire pour nous. Slim ne vient pas avec un, donc nous devons en fournir un et nous pouvons utiliser ce que nous voulons. Mais pour les besoins de ce cours, nous allons utiliser une moustache. Donc encore une fois, nous allons retourner au terminal ou à l' invite de commande et nous allons faire le compositeur exiger, doit demander slash moustache. Et donnera au compositeur quelques secondes pour l'apporter. moustache est un modèle vraiment simple dans le langage. Donc, il est génial pour ce cours d'apprentissage prévu parce qu'il est assez facile à comprendre, a une logique minimale dans le modèle. Super, donc c'est dans, Maintenant, allons de l'avant et installons cela dans notre projet. 14. Configurer la DIC: Nous avons donc notre Templating et nous avons notre injection de dépendance ou Service Manager installé. Donc, tout d'abord, nous allons nous débarrasser de ceux-ci et ensuite apparaître dans le conteneur. Configurez cela de sorte que lorsque nous voulons accéder à un service de modélisation, nous pouvons, donc nous appellerons contenir un ensemble et définirons à nouveau une fonction anonyme. Haha, j'aime avoir mes demi-virgules et tôt pour qu'on ne les oublie pas. Et nous dirons une nouvelle moustache sur le moteur SQL. Et je les transmettrai ici. On va passer par ça dans une minute. Pour le moment. Allons juste descendre un code. Ok, ça a l'air bien. Nous mettons donc en place un service appelé templating. Cela signifie que lorsque nous définissons nos racines et que nous essayons d'accéder au modèle entretenu, il exécutera cette fonction, et cette fonction nous délivrera ce moteur de moustache, qui est le modèle de moustache service. Maintenant, vous pouvez vous demander, Ok, nous avons importé tous les espaces de noms apparaissent pour tout le reste. Pourquoi ne pas faire ça avec de la moustache ? Et c'est parce que moustache est dans l'espace de noms racine et nous sommes dans l'espace de noms racine ici. Donc, par exemple, ce fichier, il y aurait une définition en haut qui dit espace de noms deal .II. Et puis il dirait comme conteneur de classe. Et c'est pourquoi nous devons l'importer à partir de cet DI, espace de noms. Mais le moteur de moustache n'a pas cette déclaration d'espace de noms et nous n'avons donc pas besoin de faire une déclaration pour au pair. Deuxièmement, qu'est-ce qu'on fait ici ? Eh bien, nous disons à moustache d'où charger le modèle, et nous allons bientôt créer le répertoire de ce modèle. Donc nous disons de me générer un moteur de moustache. Et lorsque vous avez besoin de charger le modèle utilise le chargeur de système de fichiers et le charger à partir de cet emplacement et ne dispose pas automatiquement d'extensions. Donc, vous pouvez, si vos modèles vont tous être appelés point HTML, vous pouvez l'ajouter là. Mais je pense qu'il est plus facile de définir ça au fur et à mesure. Donc, nous allons le charger à partir du fichier template et nous allons juste charger le nom du fichier, nous lui donnons n. Regardons comment cela, nous l'utilisons réellement dans la leçon suivante. Et puis tout cela commencera à se réunir et à avoir beaucoup plus de sens. 15. Utiliser le service de modèle: Maintenant que nous avons configuré le service de modélisation, continuons et utilisons-le. Donc, nous allons venir ici après avoir créé l'application et nous allons créer un itinéraire et dire bonjour, nom comme nous l'avons fait avec le projet original. Et encore une fois, nous allons définir la fonction anonyme. Donc, nous prendrons notre quête, notre réponse et quelques arguments. Ok, gentil. Et dira que nous obtenons le service de modélisation. Et nous allons appeler la méthode aléatoire, qui est une méthode moustache qui dit rendre du HTML. Et nous allons lui donner un nom de modèle, hello.html. Et puis nous allons passer des variables aussi. Donc, la façon dont vous rendu modèle est de dire à moustache quel modèle vous voulez rendre et quelles variables vous voulez ajouter un dans ce cas, nous allons juste, je vais lui passer une variable appelée nom. Et nous allons tirer ça les arguments, ce qui va bien sûr prendre cette tête que nous passons. Donc, cela va générer cette chaîne HTML. Et puis on peut dire réponse, obtenir corps, non ? Nous allons écrire notre code HTML et ensuite nous retournerons la réponse. Ok, ça a l'air plutôt sympa. Allons de l'avant et créez un modèle dans la leçon suivante. 16. Créer un modèle: Nous allons créer un modèle alors. Donc, c'est vraiment facile. On va utiliser un réservoir de hauteur 1. Je vais te dire bonjour. Et moustache utilise ce système d'accolades double pour toutes les variables que vous voulez transmettre. Et littéralement c'est tout. Donc, nous pouvons enregistrer cela, appelez-le hello.html. Et dans notre espace de travail, nous allons créer un répertoire de modèles et enregistrer cela. Super. Donc nous regardons ce qui se passe ici. Lorsque nous appelons cette route en disant, Accédez au modèle et au service, rendre ce hello.html, que nous avons dit regarder dans le répertoire templates, passant cette variable de nom. Et puis un modèle. On a cette paire. Donc tout devrait être prêt à partir maintenant. 17. Rendre une page: Donc, nous sommes maintenant prêts à exécuter nos projets ou juste 0,1 minuscule erreur de syntaxe. Ça devrait être adulte. Ça a l'air bien. Donc on va y aller et on va dans notre répertoire public. Et encore une fois, nous allons exécuter PHP est serveur de développement local, donc nous allons faire pitch P dash S, localhost, 8 mille. Ok, maintenant nous définissons le nom de la barre oblique. Essayons de slash Kim. Parfait. Donc on a une étiquette H1. Donc, nous passons le nom ici comme pourrait être n'importe quel nom ici. Ça se passe ici comme argument. Et nous prenons un argument avec l'envoi à la moustache pour rendre ce modèle hello. On est en train de tomber à Haha, Great. Donc, un système de modélisation fonctionne maintenant. 18. Contrôles: nous avons déjà écrit quelques pages sur. Nous avons mis en place un service pour nous aider à prêter à ces pages, mais pour le moment, ce n'est pas super évolutif. Son plus grand nombre dans un seul fichier. Et si nous voulions écrire une plus grande application, cela deviendrait un peu désordonné. Alors comment on fait ça ? réduire les échelles vraiment bien parce que nous pouvons utiliser des contrôleurs de la même manière que nous utiliserions des contrôleurs dans un cadre plus grand. Mais ils se fente vraiment bien dans mince aussi bien. Et donc dans ce module, nous allons voir comment faire ça. 19. Créer un contrôleur: Être capable de coller tout notre code dans un seul fichier est utile si nous n'avons qu'un petit projet et que nous gardons les choses agréables et simples, que se passe-t-il si vous avez un projet plus grand ? Si nous avons 20-30 racines, alors soudainement index.js HP va être énorme. Donc, au lieu de cela, nous pouvons décomposer les choses en fichiers séparés et nous pouvons utiliser des contrôleurs, des secousses comme vous pourriez utiliser un contrôleur et un framework plus grand comme symphonie ou Lera val. Vous pouvez également utiliser des contrôleurs en slim. C' est votre choix si vous voulez tout mettre dans un fichier ou diviser. Alors allons de l'avant et créons un contrôleur. Et je vais juste aller de l'avant et sauver ça au premier contrôleur. Et je vais le mettre, je vais le répertoire source de Chris. Et puis à l'intérieur de cela, je vais créer répertoire du contrôleur et nous sauver le premier contrôleur. Ok, super. Joli. Donc, d'abord, je vais donner un espace de noms, puis nous allons vouloir apporter une réponse à la demande. Allons les prendre. Et puis je vais aussi apporter cette interface de conteneur et nous utilisons ce dommage de valve aussi. Et puis je vais juste définir ce contrôleur. Donc, quand une chose utile qui s'est passé avec Slim est que quand il crée ce contrôleur vers l'avant, il passe dans le conteneur d'injection de dépendance, l'interface du conteneur. Donc, le processeur est plein. Nous pouvons enregistrer cela dans cette variable d'instance ici. Et puis nous, quand nous voulons accéder à nos services, accéder à notre conteneur d'injection de dépendance vers le bas. On l'a sur cette variable prête. Il a rencontré son privé parce qu'on n'a besoin de personne d'autre pour y accéder maintenant. Et puis nous définirons une méthode. Donc, définissons une fonction de page d'accueil et légère les fonctions anonymes dans index.html. Nous allons obtenir une demande et une réponse ici et accèderons à notre conteneur. Et encore une fois, nous dirons obtenir templating, dire rendre la page d'accueil que HTML, Tony pour passer toutes les variables. Et à ce stade, et encore une fois nous dirons obtenir corps et appeler la méthode d'écriture, passer l'homme HTML. Et cela aiderait si je pouvais épeler retour correctement. Ok, gentil. Donc, au lieu d'une fonction anonyme, maintenant nous avons ce contrôleur avec cette méthode de page d'accueil dans, dans la leçon suivante, allons de l'avant et créer ce modèle de page d'accueil. 20. Créer des modèles: Nous avons créé notre contrôleur ici. Alors allons de l'avant et créer ce modèle de page d'accueil. Donc je vais créer un nouveau fichier ici et nous allons utiliser quelques inclusions. Donc, la façon dont nous faisons cela dans la moustache est avec les accolades et puis plus grande que la flèche. Et puis nous allons mettre un modèle. Et puis nous allons créer le corps principal. Dites, bienvenue sur ma page d'accueil. Merci de votre visite. Et je vais utiliser cette syntaxe include à nouveau pour apporter le pied de page. Et nous allons enregistrer ceci en tant que page d'accueil HTML. Et nous allons le mettre dans le répertoire templates. Quelques autres choses dont nous avons besoin. Donc, nous devons réellement créer ces pieds de page de hauteur. Maintenant, vous pouvez les créer manuellement, mais vous pouvez également simplement les copier et les coller à partir de l'exemple de code. Donc si on va dans le projet éolien trois ici. Alors allons de l'avant et prenons cet en-tête. Et nous allons simplement enregistrer ceci comme en-tête où que vous travailliez. Et les photos devraient être assez simples aussi. Encore une fois, nous allons tirer ça. Et l'une des choses que nous voulons surveiller est l' en-tête n-x comprend ce style.css. Alors allons-y et attrapons ça gratuitement aussi. C' est dans le répertoire public. Donc style.css et moi connaissons l'espace de travail. Nous allons enregistrer ça dans le répertoire public. Donc, je vais rendre les choses plus jolies aussi. Super. Donc nous avons notre modèle ici, nous avons notre contrôleur ici. On a juste besoin de tout brancher maintenant. 21. Autoloading: Dans les vieux jours de PHP, une fois que nous avons ce premier contrôleur, nous pourrions entrer ici et est quelque chose comme exiger la sauce peut rouler. Premier contrôleur. Mais c'est une vraie masse car alors le code est étroitement couplé et vraiment difficile à tester. Donc, au lieu de cela, nous pouvons maintenant utiliser le chargement automatique basé sur l'espace de noms parce que nous définissons cet espace de noms ou payeur. Alors allons de l'avant et configurons ça. Nous devons revenir à notre dossier du compositeur. Et nous allons ajouter une nouvelle section ici appelée chargement automatique. Et ça va être un PSR pour et on va dire à Slash Slash Slash. Donc, n'importe quoi, n'importe quel espace de noms qui commence par une application, vous devriez charger automatiquement à partir du répertoire source. Donc, cela signifie que lorsque nous essayons de lire le contrôleur d'application Reference, premier contrôleur, ça va dire, ok, commence par une application. Alors regardez dans le répertoire source, et puis il dira, OK, c'est dans le contrôleur et c'est le premier contrôleur. Cela signifie donc que PHP va nous aider à le trouver par magie. Donc la prochaine chose que nous devons aller à notre terminal et juste mettre à jour le compositeur. Laissez le compositeur. Maintenant, c'est arrivé. Revenons à la route ici et faisons le vidage du compositeur, le chargement automatique du tiret. Nous pouvons également régénérer complètement les fichiers compositeurs. Mais si vous voulez juste mettre à jour le chargement automatique, puis le compositeur dump dash Autolite, nous ferons ce dont nous avons besoin. Ok, super. Donc ça a généré de nouveaux fichiers de pilote automatique et maintenant nous devrions être prêts à le brancher. 22. Router à un contrôleur: Allons-y et téléchargez cette manette. Donc, nous allons nous débarrasser de cet ancien code du premier projet. Et nous n'avons pas défini une racine get à nouveau. Et on en fera la racine. Donc normalement, ici, nous passons une fonction anonyme, disons, Ok, si vous correspondez à cette URL, alors livrer ceci. Et nous allons faire une chose similaire ici, mais au lieu de le faire fonctionner, nous allons passer dans une classe et un nom de méthode. Donc, nous allons dire le contrôleur d'application premier, c'est le chemin complet de l'espace de noms. Et on va dire la page d'accueil du côlon. Donc, ce deux-points est une syntaxe spécifique mince disant que c'est la classe, c'est la méthode sur cette classe parce que c'est ce que nous appelons ici que nous voulions exécuter. Et c'est littéralement tout ce qu'il faut faire pour le brancher. Alors allons de l'avant et faire exploser le serveur de développement et le voir fonctionner. 23. Tester le contrôleur: Nous viendrons à notre terminal et nous ferons un CD dans le répertoire public. Et puis comme d'habitude, dira PHP au serveur de développement de site. Plus grand courant sur localhost 8,000.5, nous obtenons un localhost 8 mille. Parfait. Nous avons notre page d'accueil. Nous avons notre page d'accueil ici. Et c'est encore plus dans notre en-tête ainsi que dans notre feuille de style. Et tout a l'air bien. 24. Contrôles abstrait abstrait: On dirait que ça marche très bien. Mais pour le moment, cela signifierait que lorsque nous créons ce contrôleur, nous devrions faire tout ce code à chaque fois. Ce serait bien si nous pouvions simplifier beaucoup de choses. Donc, ce que nous pourrions faire est de créer un contrôleur abstrait pour faire beaucoup de cette forêt. Allons-y et faisons-le maintenant. Prenons simplement cela comme une base, appelez-le contrôleur point PHP, et nous pouvons travailler à partir de là. Donc je vais en faire un cours abstrait. Donc, quand nous ne pouvons pas instancier directement, vous devez étendre en utilisant une autre classe. Et on l'appellera contrôleur. Et nous allons changer cela pour le protéger parce que nous voulons que nos classes enfants puissent l'utiliser. Et puis nous reviendrons à cette méthode de page d'accueil ici. Et nous allons créer une fonction appelée rendu, qui fera une partie du levage lourd en termes de rendu HTML. Nous prendrons donc une réponse, prendrons un nom de modèle, et nous prendrons toutes les données et variables qu'un veut introduire, qui par défaut sera un tableau vide. Et puis nous ferons la même chose que nous faisons dans une fonction normale et nous appellerons l'effort aléatoire. Ok, ça a l'air bien. Donc c'est un contrôleur que nous pouvons maintenant étendre. Et allons de l'avant et créons un contrôleur qui utilise cela. Donc on n'en aura pas besoin. Et appelons le second contrôleur. Super, on va sauver ça. Et nous n'avons plus besoin de ce code parce que c'est dans leur parent bien que s'étendant. Donc nous allons étendre le contrôleur. Et débarrassons-nous de Nid aussi. Et maintenant, nous allons créer une fonction normale. Donc nous appellerons ça bonjour. Et maintenant, nous pouvons utiliser la méthode spéciale que nous créons sur notre contrôleur de base. Donc, je vais passer l'objet de réponse. Modèle sera appelé bonjour. Et pour l'instant, nous allons juste coder ceci. Ok, ça a l'air plutôt bien. Nous avons donc notre deuxième contrôleur qui étend notre contrôleur basé sur le contrôleur de base configure des choses comme prendre le conteneur d'injection de dépendance et mettre dans une variable d'instance. Et cela vous donne cet effort aléatoire, fait beaucoup de la levée lourde de l'utilisation de cette forêt. Donc ici, tout ce qu'on a à faire, c'est de dire, ok, ça va être bonjour. Et nous voulons juste mettre en évidence les quêtes de nom. Et puis nous avons juste besoin de ce nom de fichier modèle. J' ai ça traîne ici, mais mettons-le au plus vite. Donc, nous apportons l'en-tête et le pied de page, ou si vous le supprimez, vous pouvez simplement le créer à partir de zéro. Ok, deluxe, parfait. Donc, nous avons notre contrôleur de base, nous avons notre nouveau contrôleur, et nous avons notre modèle. Allons-y et télévions tout ça. 25. Tester le contrôleur abstrait: Allons-y et branchons ce second contrôleur. Nous viendrons donc à nos racines et nous définirons une nouvelle voie. Et dis bonjour. Encore une fois. Nous allons lui donner un chemin complet. Donc c'est le second contrôleur. Et la méthode s'appelait bonjour. instant, si on passe à notre serveur de développement, on doit bonjour. Parfait, donc nous avons bonjour Chris, c'est la variable que nous avons passée et nous avons un en-tête et un pied de page et fonctionne aussi bien. C' est assez similaire à ce que nous avons fait au début. Mais si vous vous souvenez dans le premier contrôleur, il y a beaucoup de code standard ici qui se passe ici et ici. Alors que ce second contrôleur, maintenant nous cachons beaucoup de ça dans ce contrôleur abstrait. C' est beaucoup plus joli parce que c'est littéralement une ligne pour rendre un modèle. Nous n'avons même pas besoin de toucher le modèle en service dans ce cas. Mais nous allons toujours garder cela comme protégé afin que nous puissions accéder aux services ici si nous le voulons, et nous le ferons plus tard dans le projet. Mais cela le rend juste super agréable et propre lors de l'utilisation ce contrôleur abstrait et modèle ChildController. 26. Demandes et réponse: dans ce module. Nous allons examiner comment nous modifions les objets de requête et de réponse. Alors que se passe-t-il lorsque nous voulons extraire des informations de la requête, de la chaîne ou de la soumission du formulaire ? Que se passe-t-il lorsque nous voulons renvoyer différentes formes de données, telles que Jason ? Ou peut-être qu'une redirection regardera tout cela dans ce module, et les choses deviendront un peu plus intéressantes sur le produit. Front écrira quelque chose d'un peu plus substantiel et que nous allons créer des enregistrements consultables , Got Lord appelé Rockin Records. 27. Enregistrement de rocen: Dans ce projet, nous allons créer un catalogue de musique consultable appelé Rockin records. Il y a quelques choses que nous devons faire avant de commencer. Donc, si vous allez dans Project pour le répertoire de données et qu'il y a un point JSON d'album. Nous en avons besoin. Donc, enregistrez simplement ceci en tant qu'albums dans JSON dans un répertoire de données. Et dans les modèles. Nous avons cet en-tête mis à jour. Allons de l'avant et copions ça. Et enfin, dans l'annuaire public, il y a aussi une feuille de style mise à jour. Alors amenez ces trois dossiers et nous sommes prêts à commencer. 28. Créer la page d'accueil: Dans cette leçon, nous allons créer une page d'accueil pour le catalogue d'enregistrements. Donc on peut aller de l'avant et se débarrasser de ce premier contrôleur. Et oups, zone. C' est juste renommer celui-là. Et on appellera ce contrôleur de recherche. Et nous allons renommer ici pour se débarrasser de cette méthode lui, j'ai couru à partir de zéro. Donc, nous allons dire fonction publique, appelons-le simplement par défaut. Ce sera la page par défaut, la page d'accueil. Et beaucoup de demandes. Et je ne dirai pas réponse. Formule équilibrée bien. On y va. Et là, prenons cette liste d'albums. Donc, nous utilisons la méthode de décodage adjacente et le fichier obtenir le contenu. Et nous allons dans le répertoire de données et nous appelons l'album point JSON. Donc, décoder JSON, vous pouvez l'avoir comme un objet ou un tableau et nous voulons comme un tableau. Et puis nous allons aller de l'avant et rendre une page ici. Donc, nous allons passer la réponse HTML par défaut. Et on va passer les albums là-bas. Droit ? Nous avons donc défini la fonction racine. Nous avons dit obtenir ce tableau d'albums et le passer au modèle. Alors allons de l'avant et créons un modèle pour cela aussi. Look paie aussi des normes, donc nous allons dire en-tête. Et si nous voulions faire une boucle dans la moustache, nous utilisons ce hachage et une barre oblique pour y mettre fin. Et puis nous apporterons notre pied de page ici aussi. Enregistrez ceci et les modèles. Et puis à l'intérieur ici pour chaque album, Créons div. Imprimons aussi le titre et le nom de l'artiste. D' accord. Eh bien, c'est bon pour moi. La dernière chose est, et nous allons filer ça. Donc, nous allons entrer dans notre index.html, être donné à cet ancien code et nous allons dire application. Et nous allons définir une route get. Il va obtenir le contrôleur d'application, le contrôleur de recherche par défaut. D'accord ? Et si nous revenons à notre serveur de développement et parfait, Nous y allons. Par défaut, nous avons cette page d'accueil, Rakim enregistre, et j'ai l'artiste disparu ici. Alors allons de l'avant et dépannons. Et voilà, M. T, je suis parfait. Nous avons donc maintenant le nom de l'album et le nom de l'artiste affichés sur la même page. 29. Recherche avec des fins d'application: Nous avons dit que nous voulions que le catalogue soit consultable. Alors allons de l'avant et permettons nous de rechercher avec des chaînes de requête. Donc, nous pouvons simplement copier et coller cette méthode et nous l'appellerons recherche. Ok, maintenant je, donc on va toujours devoir charger nos albums. Mais nous allons aussi avoir besoin d'obtenir la chaîne de requête. Et ça va s'appeler Q. Donc hey, nous allons tirer la variable de chaîne de requête q de la requête. Et puis on dira, Ok, s'il y a une requête, alors on va filtrer ce tableau. Donc, nous allons utiliser des valeurs de tableau. Filtrer les noms pour être album. On l'a remise en forme et quand on aura le code. Et puis ici, rendu, qui est le modèle que nous allons créer. Ok, donc ce qu'on fait ici, eh bien, si on reçoit une requête, si on n'a pas de requête, on va juste l'ignorer et on tourne tous les albums. Mais si nous avons une requête, alors nous allons prendre ces albums et nous allons le filtrer fonction de si la requête est dans le titre ou dans le test complet. Donc, maintenant, nous pouvons aller de l'avant et créer un modèle de recherche. Il va dans le dossier templates, obtenu par défaut. Haha, nous allons simplement copier et coller ce appelé search.html. Et on va quitter le téléphone. Ok, n'a pas l'air sympa. Donc nous avons des actifs d'ici, cependant, les albums, nous avons une méthode ici. Alors allons-y et téléchargeons-le. 30. Exécution d'une recherche: Allons de l'avant et télévions les recherches de Chin et vérifions que ça marche. Donc, nous allons ouvrir l'index point PHP et nous allons définir un nouveau ici. Il y aura pour obtenir la recherche de slash Ru et le câbler aux contrôleurs d'application, un tel contrôleur. Et nous appelons l'ensemble de méthodes. Super. Donc, nous allons passer à notre développement, peu importe. On a une recherche de slash. Ça a l'air bien. Donc nous avons une boîte de recherche ici, et nous avons tous des albums ici ne savent pas si être filtrés. Et allons-y et cherchons pour que je vienne à l'embauche. Et parfait. Tout est filtré jusqu'aux albums avec le nom Albo de l'artiste dans cette chaîne. Donc ça marche parfaitement. 31. submissions de forme: Donc, dans ce premier exemple, nous avons utilisé une chaîne de requête. Donc, lorsque nous faisons un ensemble, il apparaît dans l'URL. Mais que se passe-t-il si nous voulons faire une soumission de formulaire en utilisant post ? C' est assez facile à faire. Voyons comment nous le faisons. Nous allons donc commencer par le modèle de recherche. Nous allons faire une copie de cela et nous allons juste l'appeler formé notre HTML. Et nous allons changer la méthode en une méthode post ici. Et puis ici, nous allons copier et coller cette méthode de recherche. Et encore une fois, nous appellerons ça forme. Et cela va fonctionner presque exactement de la même manière, mais parce que c'est maintenant une variable de post plutôt qu'une chaîne de requête au lieu de get paramètre de requête, ce qui va dire get Program. Et nous allons devoir changer cela pour vous sur un nouveau modèle. Ok, adorable. Et puis à l'étape suivante, le PHP contrôle de l'application sous forme de contrôleur. Donc si je vais me former maintenant, B, un deux-points, on y va. Ok, parfait. Et ça a l'air bien, mais en fait, si je fais une recherche ici, ça ne marchera pas. Parce que lorsque nous définissons l'itinéraire, nous l'avons défini, le ghetto et maintenant nous essayons de le poster. Donc on pourrait changer ça pour poster. Mais quand on essaie juste de charger, il va normalement dire que ce n'est pas un get rw est la salle de poste. Donc, au lieu de cela, nous pouvons utiliser le verbe any. Et cela permettra à la fois GET et post. Donc on doit le faire maintenant. Mais c'est bon. Et mettre un terme de recherche, génial. Donc, il le publie maintenant il n'est plus dans l'URL, mais nous sommes toujours en mesure d'y accéder. Il est beaucoup semble parfait. 32. Slim HTTP: Vous pourriez regarder quelques-unes des méthodes que nous utilisons ici comme ceci. Obtenir le paramètre de requête sur l'objet de requête et penser, je ne trouve pas cette méthode dans les docks minces, où est-elle ? Et c'est parce que quand il s'agit des objets de requête et de réponse est un peu plus compliqué malheureusement. Tu te rappelles quand on a arrangé les choses, on a fait venir Slim. Nous irons également dans ces deux bibliothèques de requête et de réponse, qui sont PSR sept et HTTP. Et c'est parce que vous pouvez réellement les échanger contre différentes bibliothèques si vous le souhaitez. Maintenant, nous aurons besoin de 99% du temps, vous pouvez simplement les utiliser, mais c'est ce que nous appelons découplés afin que vous puissiez échanger quelque chose d'autre. Et donc ça veut dire que nous essayons malheureusement de trouver les documents. Ce n'est peut-être pas dans un endroit que vous attendez. Donc, si vous ne trouvez pas la méthode dans le bœuf aminci, la première chose est de regarder les sept documents PSR. Le psr 7 est une norme. Donc, ce n'est pas une bibliothèque concrète spécifique, mais standard utilisé par un tas de cadres différents et cela fonctionnera à travers le framework. Donc, s'il y a une méthode sur haha que vous voulez utiliser, alors cela sera disponible en slim, mais il était également disponible dans Lera val et symphonie et tout ce qui utilise la paire scie sept standard. Vous serez aidé à utiliser les mêmes méthodes standard. Et puis en plus de cela, il y a des méthodes d'aide slims parce que PSR sept en soi ne fournit pas grand-chose. Donc, il y a aussi la bibliothèque HTTP mince, qui fournit beaucoup de fonctions vraiment utiles et faciles comme des choses comme retourner des données avec JSON. Ou est-ce une redirection ou obtenir les paramètres et comment le corps passé. Donc, si vous êtes confus au sujet humide, humide pour trouver une méthode à faire si la demande et les réponses pas dans les chiens minces. Il pourrait être dans la RPC sept docs, il pourrait être dans les docs HTTP minces. Malheureusement, la façon dont nous découplons les choses maintenant et vous permettons d'échanger différentes bibliothèques. Et ils sont maintenant signifie que ça pourrait être dans un tas de documents différents et c'est un peu déroutant. Mais il fait des projets beaucoup plus compatibles et extensibles. Et il y a de bonnes raisons de programmation de le faire, même si cela gâche davantage la documentation. 33. Réponses JSON: Jusqu' à présent, nous avons travaillé avec HTML. Que se passe-t-il si nous voulons travailler avec des formats tels que Jason ? Eh bien, c'est assez facile à faire. Voyons donc un exemple de la façon dont nous ferions cela. Et nous pouvons fermer maillage ces fichiers ouvriront le contrôleur de recherche. Et nous allons simplement copier et coller dans le contrôleur API couleur point PHP dans notre répertoire de contrôleur. Pouvons-nous le faire pour la méthode ? Et nous allons nous débarrasser de cette méthode par défaut aussi. Et j'oublie de renommer la classe. Ok, adorable. Donc, la seule chose que nous devons faire, parce que mince rend agréable et facile est destiné. Au lieu de retourner du HTML, nous allons juste retourner un peu de Jason. Donc, nous allons dire réponse avec Jason, qui est l'une de ces méthodes d'aide mince, HTTP fournit. Et on va passer dans le tableau des albums. Donc, c'est le même code qu'avant, mais nous l'utilisons simplement avec la méthode JSON. Et puis si nous ouvrons la page Index.html, ajoutons une nouvelle règle. Et le contrôleur d'application, contrôleur d'API. Et je pense que nous l'avons appelé, dit, nous avons modifié le nom. Maintenant, si nous arrivons à l'API, parfait, nous avons toutes nos données JSON là-bas et nous pouvons même exécuter la requête. Et il va filtrer aussi. Ok, adorable. 34. Codet des codes de réponse: Jusqu' à présent, tout ce que nous avons retourné comme étant à 200 code de réponse. Donc, ça a été une réponse heureuse. Mais que se passe-t-il si nous avions besoin de quelque chose comme Flora follower ou 500 ou quelque chose comme ça ? Prenons cet exemple de Jason et disons qu'il doit y avoir une requête. Donc, si vous ne passez pas une requête ici, plutôt que de retourner toutes les données, ça dira jamais, vous devez passer quelque chose. Ouvrons notre contrôleur API et nous recevons notre requête ici. Donc, disons, d'accord, si la requête est vide, alors nous allons retourner une erreur. Donc on va dire réponse avec un statut de 400. Donc 400 est une demande non valide. Page introuvable serait 404, mais dans ce cas, nous voulons une demande non valide pour un 100. Et nous allons toujours renvoyer du JSON. Et nous pouvons simplement relier ces méthodes ensemble. Et on va dire une demande invalide. Ok, génial, donc c'est tout ce que nous devons faire si la requête est vide, retourner la demande non valide. On y va. Donc, si nous passons la requête, nous avons toujours une donnée. Mais si ce n'est pas le cas, nous obtenons cette demande invalide. Et si nous regardons les en-têtes de réseau, hé, nous pouvons dire que nous obtenons une erreur 400 plutôt qu'un 200. Ok, c'est juste un suivi, donc c'est normal. C' est la demande que nous avons faite et nous obtenons une demande non valide et elle apparaît en rouge parce que nous avons renvoyé un Ara avec succès. 35. Manier des erreurs: Malgré nos meilleures intentions, parfois les choses vont mal quand elles le font. Nous voulons être en mesure de gérer cela avec élégance et rendre les choses aussi bonnes que possible pour l' utilisateur dans son expérience. Donc, dans ce module, nous allons examiner la gestion des erreurs, et nous allons écrire un magasin de commerce électronique très simple qui traite des vélos. Ce sera juste une liste de vélos et une page de détails, et nous allons regarder ce qui s'est passé quand l'utilisateur se perd et a besoin de voir un écran d'erreur . 36. Magasin de vélo: Dans ce module, nous allons créer un magasin de vélos. Il y a donc quelques ressources nécessaires pour le projet 5. Donc, dans le répertoire des données, nous avons ces vélos Jason, et enregistrez ça dans notre espace de travail. Et puis dans le répertoire public, nous avons quelques styles mis à jour. Et puis nous pouvons juste manipuler cet en-tête aussi bien. Et nous sommes prêts à commencer à coder. 37. Page d'accueil des vélos: On va commencer par créer une page d'accueil pour notre boutique. Alors créons un contrôleur que nous appellerons le contrôleur de magasin. Et nous allons lui donner un espace de noms disant contrôleur slash. Et saisissons ces impulsions d'espace de noms ici aussi. Et je ne suis pas seulement contrôleur standard. Contrôleur donc tranchant étend le contrôleur. Prendre une demande et une réponse est normale. Et nous allons saisir les juts indiqués par octet comme nous l'avons fait plus tôt, comme nous l'avons fait avec les données des enregistrements. Joli. Et je vais utiliser ça pour rendre la page passant dans la gamme de vélos. Ok, ça a l'air bien. Donc, continuons et créons ce modèle par défaut aussi. Le point HTML par défaut fera une boucle à travers les vélos. Est un peu de CSS pré-créer Flores et CSS nous avons copié dans. Et nous voulons que ce lien vers une page de détails que nous allons construire plus tard et mettre le nom de l'octet dans ty pen aussi. Et puis nous sommes allés un petit emoji à vélo ici. Donc, nous pouvons simplement voler cela du modèle dans le projet 5. Et puis enfin, allons-y et pourquoi cette règle. Donc, nous allons dire contrôleur, magasin, contrôleur deux-points par défaut, et cela devrait être prêt à partir. Alors, lançons le serveur de développement dans la leçon suivante et voyons le fonctionner. 38. Tester la page d'accueil: Un changement clé que nous devons faire cela comme modèle. Je vais changer ça de div en spam. La question a l'air bien. Alors passons à notre terminal ou invite de commande et nous allons le lancer sur localhost 8 mille. Joli. Et puis dans le navigateur, nous irons à localhost 8 mille. Et ici, nous avons notre page d'accueil, magasin de vélos de tri. vélos Allah énumérés avec leurs noms sont liés aux détails et au type. Mais au moment où il n'y a pas de page de détails, alors allons de l'avant et construisons cela dans la leçon suivante. 39. Détails de la page: Dans cette leçon, nous allons créer pas la page Détails. Alors reviendra dans notre contrôleur ici. Et nous allons créer une nouvelle méthode appelée Détails. Et cette fois, nous aurons besoin des journaux aussi. Et encore une fois, nous prendrons les vélos, Jason. Il y a deux façons de le faire. On peut le mettre dans un service, on pourrait le faire n'arrêterait pas la construction. Prends-le et tout va l'attraper. Mais c'est un paquebot. On va vivre avec cette duplication de vol pour l'instant. Et je suis tout prêt pour ce tableau. On va prendre une pièce d'identité pour le vélo. Et nous trouverons ce vélo par carte d'identité. Et cela nous donnera la clé à cause de la façon dont nous faisons ça ici. Et puis nous pouvons rendre une page. Donc, nous allons exécuter les détails que HTML. Encore une fois, passons dans choisi par les soins. Nous utilisons donc une clé pour la trouver dans le tableau des vélos. Ok, ça a l'air bien. Donc, nous allons créer ce modèle de détails aussi. Donc, nous allons appeler ces détails en HTML. Et commençons par juste des grues, de simples chapelures. Et puis on va chercher l'objet du vélo. Maintenant, nous allons rentrer ce petit emoji de vélo à nouveau. Et maintenant, parce que nous sommes à l'intérieur de cet objet de vélo, nous pouvons simplement référencer une propriété. Donc, ici, nous allons utiliser le nom et mettre le type n. Et je vais mettre son écriture blanche et sa cote aérodynamique aussi. Mettez une photo sur le fond. Ok, ça m'a l'air bien. Et puis nous allons indexer et plus pourquoi cette règle. Donc nous allons dire contrôleur, magasin, contrôle sur les détails. Et ça a l'air bien. Mais je pense qu'il y a un changement important que nous pouvons apporter à ce routage pour le rendre plus précis. Alors allons de l'avant et regardons cela dans la prochaine leçon. 40. Filtrer les paramètres de route: Donc, nous avons construit la page de détails. Et si nous allons à un serveur de développement, nous pouvons maintenant dire, nous pouvons cliquer sur un vélo analogique, apporter des détails, puis nous donner blanc et Arrow et taper tout ce que nous mettons dans un modèle. C'est génial. Mais il y a un problème est que c'est censé être un ID numérique et oui, je pourrais taper un nom ici. Et il est toujours charge la page est toujours pense que c'est l'URL. Et c'est parce que nous venons de dire id, mais nous n'avons pas donné d'informations sur ce que devrait être l'ID. Heureusement, c'est vraiment facile de le faire et mince, donc si nous ajoutons un deux-points et alors nous allons mettre une expression régulière. Dans ce cas, nous voulons des chiffres 0 à neuf et il peut y en avoir plusieurs. Sanat recommence. Cela fonctionne toujours quand on met un numéro. Tout ce qui a l'air bien. Mais maintenant, essayons de mettre un nom. Et maintenant, nous obtenons une exception introuvable. Ça n'a pas l'air très joli, mais c'est ce que nous voulons. Cette URL doit être un forum pour introuvable. Donc, c'est génial parce que maintenant cela signifie que vous ne pouvez accéder à cette page que lorsqu'il s'agit d'une véritable URL. Lorsque vous utilisez l'ID. 41. Ajouter des erreurs: Donc, nous avons ce filtrage maintenant où si nous mettons des caractères non numériques, nous obtenons cette exception introuvable. Mais c'est très moche et pas super utile. Heureusement, flegm est livré avec un middleware fourni pour faciliter la maintenance. Donc on va parler d'intergiciel de costume. C' est le milieu pendant que nous créons dans le module suivant. Mais dans ce module, nous allons juste en utiliser quelques-uns qui vient avec le cadre mince. Et cela nous permet de rendre la gestion des erreurs beaucoup plus jolie. Alors allons de l'avant et ajoutons ceci. Nous allons donc ajouter le middleware de l'ère. Et on va dire vrai, vrai, vrai quand on parle de ça dans un instant. Maintenant, actualisez la page. Nous obtenons ce bien formaté pour, pour pas l'ère de la livre, qui est beaucoup plus joli que l'ancien, nous donne tous les détails et la trace de la pile joliment formatée. Et cela vient avec mince. Donc, tout ce que nous avons à voir avec cette ligne, ces différentes options le permettent. Celui-ci dit si vous devez afficher les détails de l'erreur pas donc si nous vendons sur false, nous voyons tout ce que nous obtenons n'est pas trouvé et nous n'obtenons aucune de l'époque. Ce n'est pas une énorme affaire sur un pas trouvé. Mais si vous considérez que cela gère également 500 erreur de serveur est en production. Nous ne voulons pas afficher tous ces détails. Nous voulons juste dire à l'utilisateur qu'il y a eu une erreur. Alors que dans le développement, nous pouvons donner cela à la réalité. Et cela nous donne tous les détails pour que nous puissions le déboguer. Donc nous sommes probablement en train de changer cela en fonction de la production, ceux-là au contrôle. Où d'autre, en termes de journalisation, l'erreur va et vous pouvez passer un logo personnalisé ici aussi. Mais le principal est de s'assurer que cela est réglé sur faux et la production. Donc, vous n'affichez pas votre code PHP aux utilisateurs s'il y a une erreur. Mais nous voulons que ce soit vrai dans le développement afin que nous puissions déterminer ce qui se passe. 42. Pages d'erreur personnalisées: Que se passe-t-il si au lieu du gestionnaire d'erreurs par défaut Slims, nous voulions fournir notre propre page où nous pouvons le faire en utilisant le middleware jamais. C' est un peu difficile, mais on va le faire maintenant. Donc, nous allons dire l'ère middleware, définir le gestionnaire d'erreur. Et puis inspirez de l'air. Festival dira ce que nous voulons gérer. Donc, dans ce cas et certains pas trouvé exception. Et puis nous lui donnerons une fonction pour déterminer ce qu'il faut faire quand on trouvera ça. Je vais vouloir utiliser notre conteneur aussi. Et puis on va dire Control-A. Ok, alors parlons de ce qui se passe ici. Donc, sur le middleware ERA, nous définissons le gestionnaire d'erreurs et nous le définissons. Donc, chaque fois qu'il y a une exception non trouvée, qui est ce qui se passe ici. Ensuite, nous allons exécuter cette fonction. La fonction prend un objet de requête et nous apportons également notre conteneur afin que lorsque nous exécutons cette fonction, nous puissions créer un contrôleur. Dans ce cas, il s'agit d'un contrôleur d'exception que nous allons créer dans une minute. Et nous allons gagner la méthode NOT_FOUND. Donc, c'est juste comme câbler ce livre pour les erreurs introuvables. On va créer manuellement autour de la manette. Et nous allons retourner la méthode NOT_FOUND passant dans la requête. Alors allons de l'avant et créons le contrôleur d'exception et un modèle pour cela dans la leçon suivante. 43. Contrôleur d'exception: Maintenant que nous avons dit que nous voulons utiliser ce contrôleur d'exception, nous devons aller créer cela. Alors faisons ça maintenant. Donc, nous allons l'appeler un contrôleur d'exception. C' est n'importe quel espace de noms de contrôleur d'application. Et tire avec des contrôleurs. Nous avons besoin de cette interface de demande de serveur. Mais nous n'aurons pas besoin de la réponse parce que nous en parlerons dans une minute, mais normalement nous recevons la réponse transmise. Donc, si nous regardons le contrôleur de chop, la réponse arrive ici. Mais si nous voyons ici dans le gestionnaire d'erreurs, nous n'avons pas réellement un objet de réponse l'a passé. On n'a que la demande. Donc, nous allons devoir créer notre propre réponse. Donc, nous allons définir la classe. Et nous allons étendre les contrôleurs que nous pouvons utiliser nos méthodes d'aide normales. Et puis ici au lieu de, créons un premier cours de fonction appelé NOT_FOUND quand nous l'avons défini ici. Donc on l'appellera pas trouvé ici. Et on va avoir besoin d'une écusson. Et parce que nous ne recevons pas la réponse, nous allons créer notre propre réponse ici. Nous pouvons le faire parce que nous importons l'espace de noms ici. Donc on va juste créer une réponse vide. Et puis nous pouvons passer cela à la fonction de rendu comme d'habitude. Ok, des trucs charmants. L' autre chose que nous devons faire est de créer ce modèle NOT_FOUND. Modèles crit, pas en néerlandais trouvé. Je dirai juste page introuvable. Et certains à la lumière avec désolé, nous ne pouvions pas trouver cette page. Et je vais mettre un lien vers la page d'accueil. Et puis nous apporterons ce flottement aussi. Ok, donc SEP IRA gestion ici nous avons dit créer un contrôleur d'exception. Et lorsque la méthode NOT_FOUND, nous avons créé notre contrôleur d'exception ici, définissez la méthode NOT_FOUND. Nous avons créé notre propre réponse et lui avons demandé de rendre le modèle NOT_FOUND. Et puis nous avons créé ne sont pas trouvés modèle ici. Et on y va. Donc maintenant, quand une erreur introuvable est levée, il lance ce modèle que nous venons de créer avec notre texte local. Et je reviendrai sur le lien de la page d'accueil. 44. triggering des erreurs de triggering la commande: Nous avons maintenant notre page d'erreur personnalisée Non trouvé, mais il y a un scénario que je pense que nous manquons. Donc, nous avons senti les URL que vous devez mettre un numéro ici, mais il n'y a que huit vélos ici. Que se passe-t-il si je mets, disons 800 ? Nous allons, c'est une URL valide car c'est un nombre. Mais la moto ne devrait pas exister. Et oui, je reçois ceci, qui est le premier élément du tableau. Et si je mets un numéro dans un probablement obtenir Bian Qi aussi bien parce que la clé, ils ne peuvent pas trouver le nom de la clé. Ça revient faux. Et si nous regardons ce que notre code fait dans le contrôleur Shock, cela reviendra comme faux. Et puis je vais essayer de faire tomber ce que nous allons juste par défaut pour le premier élément qui est le Qi Bian. Alors que le fait réel si vous mettez dans une idée de 200, vous devriez obtenir un pas trouvé. Donc, pour ce faire, nous allons devoir déclencher manuellement une exception HTTP introuvable. Donc il y a un contrôleur de magasin et nous allons avoir besoin de l'importer. Donc, nous allons utiliser une exception mince, HTTP, exception introuvable. Et puis ici, nous pouvons faire une petite vérification pour dire si p est faux, et nous allons faire triple égal pour nous assurer que c'est un booléen et ne pas dire le nombre 0, ce qui pourrait se résoudre à faux. Si c'est le cas, nous allons lancer une exception et nous devons passer la demande et la réponse à cela. Ok, donc maintenant nous disons que si la clé n'existe pas, lancez cette exception et ensuite elle sera gérée par notre gestion des erreurs. Donc, si on rafraîchit la page maintenant, adorable. Donc, nous avons mis dans une idée de 200 et c'est que payé pas trouvé. Nous pouvons toujours aller dans n'importe lequel des vélos existants et obtenir les détails. Mais si nous changeons cela en un ID qui n'existe pas, clé revient comme false. Nous pour notre exception et il est pris par la gestion des erreurs et montre notre belle page d'erreur. 45. Middleware: middleware nous permet de modifier la requête, l'environnement et la réponse et de faire beaucoup de traitement supplémentaire. Donc, si vous voulez gérer des choses comme la gestion de session, traitement des données, gestion des erreurs, nous pouvons tout faire avec le middleware. Donc, dans ce module, nous allons écrire une application de zone de membres où vous pouvez vous connecter et comme, nous-mêmes, appelé Number Zone. Et nous allons le faire en amenant un milieu tiers où l'argent à la session et écrire notre propre middleware pour gérer l'authentification. 46. concepts Middleware: Regardons la théorie derrière middleware jusqu'à présent dans notre genre d'utilisation de base de l' application, nous avons eu cette idée. Cette requête vient du navigateur, disons, une requête get à slash, bonjour et qui est mappé à une racine sur la route, regarde la requête et dit, OK, nous allons envoyer cette réponse Retour. Cela dit, Voici un moment hâtif dit Hello World sur le code. Dans cette route, le framework fait la correspondance pour la route, puis la racine renvoie la réponse dont nous avons besoin, et c'est un système d'entrée simple. Mais que se passe-t-il si nous avons besoin de quelque chose de plus complexe où nous voulons interagir avec cette demande et peut-être changer la réponse en fonction de différentes variables ou simplement SMA ou information à elle, changer légèrement, examiner certaines des informations qu'il contient avant que nous ne les transmettions à la racine ? Cela peut être quelque chose que nous voulons faire dans chaque demande ou faire certaines demandes. Eh bien, la réponse est ici que nous utilisons des middleware, donc la requête entre et elle passe ensuite par une série de middleware moins, et nous pouvons avoir autant d'usure du milieu comme nous le voulons dans ce petit diagramme que j'ai montré à morceau de middleware. La demande arrive. Il est passé par le milieu, où chaque conduit à l'application peut alors faire quelque chose et le transmettre à nouveau . Il va pour ce processus et finit par atteindre la réponse. C' est donc une chance pour nous d'intervenir dans le cycle de vie de cette requête et de cette réponse sans que le code ait à se trouver dans la route elle-même. 47. Zone membre: Un peu de préparation pour ce module. Donc, nous sommes maintenant dans les projets six. Et si nous allons en public, quelques styles mis à jour, nous pouvons copier et coller ici. Et vous pouvez également copier sur la tête au modèle. Ou vous pouvez juste aller ici et mettre à jour les chiffres. Je vais l'appeler membres. Je suis tout ce qu'il nous faut pour commencer avec ce projet. 48. Sécuriser et et loger: Allons de l'avant et commencer grues quelques pages de base pour la zone membre. Donc, nous allons créer un contrôleur désactivé. Compte tenu de l'espace de noms standard. Apportez la demande et la réponse. Et je sais l'appeler off controller étend le contrôleur comme d'habitude. Et nous allons créer une méthode appelée login. Appelez la pénalité de connexion du modèle pour l'instant. Et puis copions et collez ceci et créons un contrôleur appelé Secure Controller. Donc ce sera notre zone de membres. Et nous appellerons cette méthode par défaut, et rendrons également un modèle appelé par défaut. Allons de l'avant et prenons soin de ces modèles. Donc, nous appelons ceci un point de connexion HTML, apportant le flottement à la fin. Ok, ça a l'air bon pour le modèle de connexion. Ensuite, créons un modèle non par défaut, qui sera le tableau auquel vous arriverez lorsque vous êtes connecté. Clot point HTML par défaut. Je voudrais dire quelque chose comme bienvenue, bienvenue dans la région des membres. Ok, et ensuite, nous allons brancher ces racines. Slash r2 et plus. Pourquoi cela jusqu'à la connexion. Donc, il va utiliser le verbe n'importe quel parce que vous allez pouvoir poster à ça à un moment donné. Ce que vous pouvez poster à elle. Maintenant, le formulaire ne va rien faire, mais vous pourriez le faire. Et appelons Slash sécurisé. Et ça va aller au contrôleur sécurisé et on l'a appelé par défaut. D' accord. Allons obtenir des développements toujours permanents. Et voyons ce qui se passe ici. D' accord. Oui. J'ai donc mon formulaire de connexion et si je vais sécuriser, j'ai ma page de bienvenue. Donc on a sorti les pages. Évidemment, il y a maintenant Protection et leur système de connexion en ce moment, mais nous avons un bon échafaudage pour commencer. 49. Middleware de session: Pour gérer cette session, nous allons avoir besoin d'une sorte de bibliothèque de gestion de session. Dans ce cas, je vais utiliser ce qu'on appelle Slim Session. Donc, nous pouvons aller de l'avant et installer qui permet le serveur de développement conseil et nous allons faire un compositeur exiger orthographe correctement. Nous le découvrirons très rapidement. Donc, nous allons juste laisser le compositeur faire son truc ici pour installer le middleware, ce qui devrait juste prendre quelques secondes. Ensuite, nous retournerons à notre page d'index et l'installerons. Ok, gentil. Donc oui, on a ça. Et si nous regardons composer un fichier là c'est. Parfait. Cool. Donc on va installer ça en tant que service. Et nous allons devoir l'ajouter en tant que middleware. Eh bien, alors allons-y et faisons-le. Donc, dans notre fichier d'index, disons contenir une session définie. Et nous allons lui donner une fonction ici comme d'habitude. Et tout ce que nous allons faire ici, c'est retourner une nouvelle session mince, comment PKA. Et puis nous devons ajouter le middleware aussi. Donc on va le faire ici. Ok, parlons de ce qui se passe par ici. Donc, ici, nous installons le middleware, ce dont nous avons besoin pour le faire fonctionner. Mais nous voulons aussi rendre la section disponible dans notre conteneur d'injection de dépendance, donc le sera aussi, une fois que nous l' avons fait, nous allons l'installer en tant que service ici aussi. Nous pouvons donc l'utiliser dans notre contrôleur. Donc, si on doit juste enlever la manette et le haut de hé, faisons juste écho à quelque chose. Donc, nous allons ajouter un conteneur d'injection de dépendance. Nous ne pouvons pas le service de session. Et on aura le comte. Et ici, nous allons mettre en place un compte aussi. Encore une fois, nous avons le service de session. Donc, cela devrait avoir la croix en fait être saccagé parce que nous voulons définir le nombre pour être égal à compter plus un. Maintenant, si nous allons ici sur notre page de connexion et que nous actualisons, nous voyons les services de session fonctionner parce que chaque fois qu'il incrémente ce nombre. 50. Se connecter et sortir: Maintenant que nous avons un service d'adhésion, allons-y et utilisons-le. Nous allons donc commenter ce code que nous avons créé ici. Et puis nous allons gérer l'utilisateur qui soumet le formulaire. Donc, nous dirons que la requête est des méthodes d'aide post qui vient sur les vérifications HTTP minces si la requête est publiée. Et si c'est le cas, on va aller de l'avant et on aura le service de session. Et nous allons définir l'utilisateur TB, l'adresse e-mail. Donc, dans le monde réel, nous allons évidemment vérifier cela avec un utilisateur valide. Mais pour ici, croyons-leur que leur adresse e-mail est légitime. Et on va utiliser une méthode d'aide Nova ici parce qu'on veut les envoyer dans la zone des membres. Donc nous allons faire la redirection de la réponse et nous les rediriger vers la sécurité, nous allons le rendre. Donc maintenant, si nous utilisons un post quelque chose, il va enregistrer cette adresse e-mail à la session et cette utilisation de la variable et il les lira. Même ce que nous voulons faire est d'ajouter une méthode de déconnexion. Et là encore, nous obtenons le service de session. Et au lieu d'un temps Gauss Atlas, nous allons supprimer parce que nous voulons supprimer ces variables. Et retournera la réponse à nouveau en utilisant la méthode de lecture juste à la barre oblique, ce qui les ramènera à la page de connexion. Et puis allons dans index.js, HP et pourquoi cela aussi ? Déconnexion par barre oblique. Et une fois que vous sortez du contrôleur sur la méthode est appelée déconnexion super. Donc, nous voulons probablement aussi leur dire de ne pas se connecter et leur donner beaucoup de lien de déconnexion. Allons-y et faisons-le dans la prochaine leçon. 51. Jouer le nom d'utilisateur: Les utilisateurs peuvent maintenant se connecter, mais nous devons idéalement lui dire qu'ils se sont connectés. Donc si on ouvre le contrôleur sécurisé ici et on va passer quelques données ici. Donc, lorsque vous obtenez le nom d'utilisateur, donc nous obtenons un service de session obtiendra une utilisation de la variable à partir de cela. Et puis si nous ouvrons par défaut, nous pouvons dire quelque chose comme vous êtes connecté en tant qu'utilisateur. Et je vais aussi leur donner un lien de déconnexion. Ok. Joli. Alors allons-y et je me connecterai. Et que nous pouvons voir que nous avons joué Chris sur example.com. Ok, adorable. Et nous avons aussi un lien de déconnexion, donc je peux cliquer dessus. Et cela me renvoie à l'écran de connexion. Donc, cela semble bien au seul problème est que je pourrais simplement taper manuellement slash sécurisé. Et je ne le suis pas jusqu'à ce qu'ils se soient connectés, nous pouvons voir les adresses e-mail vides ici, mais cela ne m'a pas empêché d'accéder à cette page. Donc la prochaine chose est qu'on doit vraiment mettre cette page en banque privée. 52. Middleware personnalisé: Nous avons ce système de connexion semi-fonctionnel où il peut se connecter, mais vous pouvez aussi simplement taper l'URL directement. Il y a des trucs qu'on pourrait faire avec ça. Par exemple, nous pourrions entrer manuellement ici et nous pourrions dire, nous obtenons la session. Et on pourrait avoir l'utilisateur. Et nous pourrions dire, si non, alors retourner une réponse. Nous avons redirigé vers la page de connexion, quelque chose comme ça. Et nous pourrions le faire dans toutes les méthodes. Mais ce serait un peu pénible parce que nous devrions nous rappeler de le faire dans toutes les méthodes. Et si on oubliait, on serait potentiellement le conjoint d'une page privée en dehors du monde. Donc, une meilleure façon de le faire est d'utiliser un middleware personnalisé. Et nous allons passer par la mise en place maintenant. Donc ça va être dans notre application. Et nous allons l'appeler authentifier point PHP. Et je vais créer un nouveau dossier appelé middleware. Et puis on va devoir apporter des choses. Et nous allons créer une classe appelée authentification variable privée appelée session. Et nous allons prendre le service de session N comme paramètre et juste l'enregistrer dans cette variable d'instance. Et c'est un peu pendant que nous allons limiter un certain temps. Donc on va utiliser une fonction magique. Pop hit pour être appelé invoke pour s'exécuter lorsque la classe est invoquée. Et je vais prendre une demande et le gestionnaire de requête. Et puis nous dirons, OK, nous avons notre service de session. Et nous dirons que la variable d'utilisation existe. Et si elle continue avec la demande. Donc, nous pouvons dire au gestionnaire de requête de continuer à gérer cette requête parce que nous savons que la variable utilisateur existe et donc l'utilisateur est connecté si elle n'existe pas. Et nous allons dans le peu demandé en disant gérer la demande avec une redirection vers la page de connexion. Donc, lorsque la requête arrive, ce middleware sera exécuté. Et il dira, est l'utilisation une variable que si elle est continuée, la requête est normale. Si ce n'est pas le cas, rediriger changer la demande pour être une redirection vers l'écran de connexion. Alors allons de l'avant et téléchargeons ce cours dans la prochaine leçon. 53. Middleware de Route: Allons de l'avant et téléchargez notre middleware personnalisé. Donc, nous devons sécuriser ici. Je vais juste déplacer celui-ci vers le bas. Et ici, nous avons ajouté quelques middleware personnalisé à l'ensemble de l'application. Mais ici, nous voulons que ce middleware s'exécute uniquement lorsqu'ils sont dans l'URL sécurisée. Donc je vais aller de l'avant où on appelle la définition de la route. Je vais ajouter, haha, je vais appeler la méthode add. Et on va appeler la classe d'authentification. Ok, super. Et puis, bien sûr, nous devons passer la session là-dedans. Donc on va dire apt-get conteneur get session. Donc, comme nous l'avons installé ici, nous avons installé un cheveu aussi. Et maintenant, si nous actualisons la page, nous sommes renvoyés à l'écran de connexion. Donc, chaque fois que nous essayons de taper l'URL, le middleware commence, il entre ici, il dit que l'utilisateur n'existe pas, alors ne continuez pas. La demande est normale, envoyez-les à l'écran de connexion. Ensuite, nous pouvons aller de l'avant ici et nous pouvons taper l'adresse e-mail et la connexion. Et on voit qu'on l'a là. Donc encore une fois, maintenant cela fonctionne parce que l'utilisateur existe et donc il n'a pas besoin d'interrompre la requête. Obtenir ce middleware ne fonctionnera que sur cette route avec le moment, car c'est à ce moment que nous l'avons ajouté à. Si nous nous déconnectons et essayons de le taper à nouveau, nous nous trouvons paquet. Les écrans de connexion sont géniaux. Nous avons maintenant un système de connexion de travail entièrement protégé. 54. Groupes de route: Que se passe-t-il si nous voulions plus d'une page ? Donc, au moment où nous venons d'ajouter cette route, une page sécurisée ici, mais nous pourrions vouloir en ajouter plus. Disons qu'on veut la page d'état. Donc, allons dans le contrôleur sécurisé et juste créer lat. Donc on va l'appeler statut. Et nous prendrons notre demande habituelle et notre réponse. Et nous allons juste exécuter la page vraiment basique ici. Et puis nous allons de l'avant et créer une page d'état ainsi modèle. Et je vais juste en dur pour dire que votre adhésion est à jour. Et nous avons besoin de télévirer ça. Et nous pourrions installer à nouveau le middleware personnalisé dans cette pièce séparée. Mais ce serait super désordonné. Donc, une façon beaucoup plus propre est que nous pouvons utiliser un groupe racine. Commentons ceci. Et à la place ici, et nous dirons application. Nous allons créer une barre oblique de groupe pour l'assurance qualité. Parce que toutes nos URL vont commencer par la sécurité des barres obliques. Vous pourriez en fait rendre cela vide si vous vouliez avoir un groupe avec des URL complètement différentes. Mais dans ce cas, ils seront tous là. Et c'est IB AP là-dedans. Et là, nous allons définir nos itinéraires. Donc, si vous êtes slash sécurisé, alors nous voulons aller à la page par défaut. Comme avant. Je vais créer une nouvelle page. Et encore une fois comme avant, nous voulons installer le middleware. Donc on peut juste prendre cette forme ici. Alors que se passe-t-il ici ? Eh bien, nous définissons deux racines aussi. C' est comme haha. Mais nous les avons mis à l'intérieur de cette zone sécurisée. Ça veut dire que si vous êtes sûr et rien d'autre, ça ira ici. Et si vous réduisez l'état de la barre oblique sécurisée, alors cela nous mènera à la page d'état. Et pour les deux, nous installons notre groupe de middleware personnalisé. Essayons donc de rafraîchir les cheveux et je l'ai vu marcher. Trouvons un statut. Oui. Et puis nous allons widgets. J' ouvre une fenêtre, on n'est pas enfermés. Nous avons été envoyés à la page de connexion. Ok, brillant. Donc cela pourrait, si vous en avez besoin complètement URL, nous pourrions laisser ce vide et nous pourrions faire quelque chose comme ça. Et ça fonctionnerait bien. Mais comme toutes les URL sont regroupées, nous pourrions aussi bien mettre une barre oblique plus difficile ici et ensuite étendre toutes nos racines ici. Donc on a le vide, on a le statut de barre oblique. Ensuite, nous pouvons installer des intergiciels d'authentification personnalisés sur toutes ces racines à la fois, tout dans le groupe, de sorte que toutes ces zones soient protégées par le système de connexion. 55. Réflexions finales: Félicitations pour être arrivé à la fin de ce cours sur Slim. Vous avez maintenant une introduction aux micro-frameworks. Vous comprenez comment mince fonctionne en termes de contrôleurs enracinement jamais rapports intergiciels et plus sur Espérons que vous avez construit vos 6 premiers projets. Partagez vos projets avec le groupe même en partageant le code source. Ou quelle que soit la raison pour laquelle vous les vouliez dans la section du projet. Si vous avez apprécié ce plâtre et s'il vous plaît laisser un commentaire sur ce que vous allez passer à la prochaine, nous tirons le meilleur de la chance.