PHP Microframeworks mit Slim | Chris Worfolk | Skillshare

Playback-Geschwindigkeit


1.0x


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

PHP Microframeworks mit Slim

teacher avatar Chris Worfolk

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Einführung

      1:23

    • 2.

      Was ist ein microframework?

      3:45

    • 3.

      Unsere erste Anwendung

      0:18

    • 4.

      Routing

      1:24

    • 5.

      dependencies installieren

      2:25

    • 6.

      Unsere erste Seite

      2:53

    • 7.

      Das Projekt führen

      1:10

    • 8.

      Routen

      0:56

    • 9.

      Route

      2:48

    • 10.

      Dienstleistungen

      0:28

    • 11.

      Dependency

      2:44

    • 12.

      Ein DIC installieren

      2:07

    • 13.

      Installieren einer Template-Bibliothek

      0:59

    • 14.

      Den DIC erstellen

      3:06

    • 15.

      Den templating verwenden

      1:45

    • 16.

      Erstellen einer Vorlage

      0:49

    • 17.

      Eine Seite rennen

      0:56

    • 18.

      Controller

      0:32

    • 19.

      Erstellen eines Controllers

      3:10

    • 20.

      Erstellen der Vorlagen

      1:58

    • 21.

      Autoloading

      1:46

    • 22.

      Routen zu einem Controller

      1:00

    • 23.

      Testen des Controllers

      0:28

    • 24.

      Abstrakte Controller

      3:38

    • 25.

      Testen des abstrakten Controllers

      1:12

    • 26.

      Anfrage und Antwort

      0:30

    • 27.

      Rocking

      0:50

    • 28.

      Erstellen der Homepage

      3:40

    • 29.

      Suche mit query

      3:17

    • 30.

      Suche führen

      0:50

    • 31.

      Form

      2:04

    • 32.

      Slim HTTP

      2:37

    • 33.

      JSON Antworten

      1:41

    • 34.

      Response

      1:50

    • 35.

      Fehler reagieren

      0:29

    • 36.

      Fahrradgeschäft

      0:41

    • 37.

      Bikes

      2:59

    • 38.

      Testen der Homepage

      0:36

    • 39.

      Details Seite

      3:25

    • 40.

      route filzen

      1:16

    • 41.

      Fehlerbehandlung hinzufügen

      2:08

    • 42.

      Benutzerdefinierte Fehlerseiten

      2:10

    • 43.

      Exception

      3:01

    • 44.

      Fehler manuell auslösen

      2:19

    • 45.

      Middleware

      0:35

    • 46.

      Middleware

      1:41

    • 47.

      Mitgliedszone

      0:27

    • 48.

      Sichere und Anmeldeseiten

      4:21

    • 49.

      Session

      3:17

    • 50.

      Anmelden

      2:14

    • 51.

      Den Benutzernamen spielen

      1:24

    • 52.

      Benutzerdefinierte Middleware

      3:23

    • 53.

      Middleware

      1:45

    • 54.

      Route

      3:55

    • 55.

      Letzte Gedanken

      0:48

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

82

Teilnehmer:innen

1

Projekte

Über diesen Kurs

PHP's microframework: Slim. Microframeworks sind cut-down von Frameworks, die es dir ermöglichen, schnell zu beginnen und deine Bedürfnisse anzupassen und zu . In diesem Kurs gehen wir Schritt für Schritt durch

Am Ende dieses Kurses hast du deine ersten sechs Webanwendungen in Slim, einschließlich eines course, e-commerce und e-commerce catalogue erstellt.

Triff deine:n Kursleiter:in

Teacher Profile Image

Chris Worfolk

Kursleiter:in

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

Vollständiges Profil ansehen

Skills dieses Kurses

Entwicklung Programmiersprachen PHP
Level: Beginner

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Einführung: Hallo und herzlich willkommen zu diesem Kurs auf PHP. Mikrofon funktioniert mit Slim, wenn Sie brandneu in Petri und Michael Frameworks sind und großartig , denn wir werden von unten nach oben beginnen. Also beginnen wir wirklich mit den Grundlagen und bauen eine wirklich einfache Anwendungen live auf und gehen dann weiter, um diese auf fortgeschrittenere Anwendungen zu skalieren. Wenn Sie eine bestehende Hündin sind, seien Sie Entwickler bereits vertraut mit über Frameworks, dann wunderbar. Du wirst Slim lieben, weil es super einfach ist, wirklich einfach zu beginnen, aber unglaublich gut skaliert. Wenn Sie also größere Anwendungen erstellen möchten, habe ich größere Anwendungen gebaut einschließlich E-Commerce-Stores, komplizierte Content-Management-Systeme, Kunden-Management-Datenbanken, alles schlank -Waagen. Wirklich gut, so fängt es einfach an und wird schön größer und wird helfen. Also denke ich wirklich, dass du es lieben wirst. Sobald Sie Teoh bekommen, Sie schlank, Sie wahrscheinlich nicht die Notwendigkeit sehen, über Frameworks zu verwenden, weil dies fast alles tut, was Sie brauchen. Ich bin Chris. Ich habe Bean, einen Softwareberater. Seit mehr als 15 Jahren. Ich habe für multinationale Unternehmen für Startups gearbeitet. Ich liebe Programmierung, und Slim ist mein persönliches Lieblings-Framework der Wahl. Also kann ich es kaum erwarten, dir das beizubringen. Lasst uns loslegen 2. Was ist ein microframework?: in dieser Lektion wird sich ansehen, was ein Mikrofonwerk ist. Es könnte helfen, wenn wir anfangen zu schauen, was ein Framework ist, weil wir anfangen könnten, jede Website von Grund auf neu zu bauen , alles selbst zu tun, die Anfrage auf der Antwort und das gesamte Routing und das Template ing zu bearbeiten. Aber, ah, viel von diesem Zeug wird über alle Web-Anwendungen geteilt. Grundsätzlich wird jede Webanwendung eine Art System brauchen, um zu sagen, okay, okay, was dir gut geht, ist der Benutzer, der anfordert und wo wir sie an das schicken werden, was wir tun werden, wenn sie diese Bitte? Und so zu Sparern von zu tun, dass die Leute kamen mit Frameworks. Andi. Sie tun Dinge wie das Routing vor der Verarbeitung, die Anforderung, die das Ergebnis zurückgibt, alle Abhängigkeiten verwalten, eine Art von Template-ing-System haben, das Sitzungsvariablen verwaltet. Und es gibt eine Reihe beliebter Frameworks bei ihrer Symphonie auf DLA. Ravel ist Ende verwendet, um beliebter zu sein. Es ist in letzter Zeit abgelehnt. Code-Zünder Kuchen, ph. B. Alle diese kommen mit einem Torrent alle Funktionalitäten, um unser Leben viel einfacher zu machen. Aber sie sind oft ziemlich groß und sperrig, und sie geben uns all diese Funktionalität aus der Box und vielleicht, dass wir etwas davon wollen, aber wir wollen nicht über Teile davon. Wir haben unsere persönlichen Vorlieben dafür, wie wir Template-ing oder Session-Management tun wollen oder diese Gits müssen in das geworfen haben, verlangsamt es eine Bedeutung. Wir müssen eine Last machen, Bootstrapping und einen Anfangscode schreiben und diese großen Controller, die wir nicht wirklich tun wollen . Und wir wollen nur etwas Super Einfaches für die nächste Generation von Dingen, die auf Mikro-Frameworks herauskamen , was viel davon weggenommen hat. Sie sagten OK, die Rial-Kernkomponente sieht im Grunde das Reuss ing und ein paar andere Dinge auf. Solange wir das tun können, wollen wir es wirklich einfach halten. Wir möchten, dass die Leute L eine Webanwendung mit einer Datei schreiben, wo sie OK sagen können, wenn ein Benutzer auf diese Route geht, dann geben Sie diese Antwort sehr beliebt bei AP Augen, zum Beispiel, wir brauchen nicht all so groß, komplexe Sitzungsverwaltung und Vorlage ing viel Zeit, und so hat es wirklich zu diesem super einfachen Framework verurteilt. Dies bedeutete, dass Mikrofonwochen oder viel schneller und einfacher einzurichten, wie wir diskutiert, können Sie oft in warmen Datei tun wollen wahrscheinlich mehr verwenden, um es sauberer aussehen und einfach einfacher zu verwalten. Aber wir könnten alles in eine Akte schieben, wenn wir wollten. Sie neigen dazu, mit der letzten gebündelten Funktionalität zu kommen, so wie wir mit Slim sehen werden, kommt es nicht. Wir haben jede Art von Datenbank-Engine oder Template-Engine, aber es macht es ziemlich einfach, eine anzuschließen, so dass, wenn wir das tun wollen, wir können. Andi, sie skalieren oft sehr gut, so dass die Leute manchmal denken, dass Mikrofon funktioniert nur für Websites mit ein paar Seiten, aber eigentlich besonders schlank mit der Macht, die es hat, können Sie eine vollständige Web-Anwendung schreiben mit komplexen Dingen wie Authentifizierung auf und komplexe Geschäftslogik, und es kann tatsächlich. Alle passen hinein. Slim wird sich anpassen, und Sie müssen gehen, um diese Dienste selbst zu holen. Aber sie stecken sehr schön ein, so dass Mikrofone in einem unglaublich leistungsfähigen Tool sind, dass Sie sehr einfach starten und ziemlich komplexe Webanwendungen aufbauen können, wie Sie es mit einem größeren Framework konnten, aber mit viel mehr anpassbar und nur viel einfacher zu beginnen und schneller 3. Unsere erste Anwendung: in diesem Modul. Wir werden unsere erste Webanwendung in Slim schreiben, und es wird die klassische Hello Welt sein. Also nichts super aufregend, aber es wird zeigen, ist die Grundlagen. Und wie einfach ist es, eine schlanke App zu schreiben, bevor wir zu größeren Projekten übergehen? 4. Routing: Schauen wir uns kurz die Theorie hinter der Verwurzelung an. Im Wesentlichen werden wir eine Web-Anwendung erstellen, die auf der Mikrofonarbeit basiert. Wir werden sehen, wie man eine Reihe von Routen dazu signiert. Im Fall von Slim ist es, indem Sie nur eine Funktion aufrufen, die auf dem Verb basiert, das wir wollen, und dann ein u r l und einen Callback übergeben . Also, zum Beispiel, wenn wir eine Anfrage erhalten möchten, die der Standard get post put dilate in diesem Fall ist, werden die meisten unserer Anfragen vielleicht eine postalische Besetzung bekommen und so rufen wir die get-Methode auf Die App wird ihm die Zeichenfolge übergeben, die wir übereinstimmen wollten. Also, wenn Sie ein Flash-Seite zwei sind, wollten wir, um diese Funktion zu lesen. Wenn Sie die u r L. Slash kostenlos bezahlt sind, dann wollten wir auf die silberne Funktion auf dem zweiten Parameter, den wir übergeben werden , ist sagen schlanke Telefonarbeit. Was sollen wir tun, wenn wir mit diesem u r l übereinstimmen, also könnte dies eine anonyme Funktion sein? Könnte einfach Oder es könnte eine benannte Funktion sein, eine Controller-Klasse, die später im Kurs untersucht wird. Aber im Grunde werden wir die Route definieren, indem wir uns sagen, was sie abbilden will und was dann das Framework tun soll, wenn es diese Übereinstimmung erhält. 5. dependencies installieren: Das erste, was wir tun werden, ist die Installation der Abhängigkeiten mit dem PHP-Abhängigkeitsmanager, Composer. Um das zu tun, werden wir hier zum Terminal oder zur Eingabeaufforderung kommen , wenn Sie unter Windows sind. Und wir werden sagen, Komponist und wir werden verlangen, und wir werden ein paar Bibliotheken hier brauchen. Also werden wir die Haupt-schlanke Bibliothek brauchen. Wir werden auch schlanke gestrichelte PSR sieben und schlankes HTTP brauchen. Ohne diese könnten Sie es technisch tun. Und wenn Sie wollten, könnten Sie einfach Slim dash slim einbringen, und Sie könnten Ihre eigenen HTTP- und PSR-Bibliotheken einbringen. In der Praxis wollen wir das jedoch nie tun. Wir wollen diese Bibliotheken immer einbringen, weil sie wirklich gut mit slim funktionieren. Also war es nur, wenn Sie sagen würden, ein Legacy-Projekt migrieren, musste ich ein Mitspracherecht und PSR Sieben-Bibliothek haben, dass Sie das in der Praxis tun müssten. Wir können sie einfach jedes Mal reinbringen. Also lassen wir Komponisten einfach wegdrehen und haben alles heruntergeladen, was wir brauchen. Okay, das sieht toll aus. Cool. Es hat also alle diese Abhängigkeiten heruntergeladen. Und wenn wir in unser Projekt gehen, und jetzt können wir sagen, dass wir diese Composer-Datei mit den Bibliotheken erstellt haben , nach denen wir gefragt haben. Dann haben wir auch diesen Komponisten Dot Loc. Das ist derjenige, der Composer genau mitteilt, welche Bibliotheken wir heruntergeladen haben, einschließlich aller Abhängigkeiten. Also würden Sie diese Datei nie bearbeiten. Wir hätten nur einen Komponisten JSON gelesen. Dieser wird automatisch vom Composer generiert. Und dann haben wir auch die Lieferantendatei, die alle Abhängigkeiten selbst enthält. Wenn wir jetzt alles machen, was unseren Händlerordner enthalten würde und wir es komponieren wollen, laden Sie dieses jedes Mal herunter, wenn wir es auf einem neuen Computer installieren. Also lasst uns voran gehen und gitignore Datei dafür in einer Minute erstellen, die im Wurzelpunkt git ignoriert wird. Wenn Sie get nicht verwenden, spielt das keine Rolle. Aber wenn Sie es sind, sind Sie wahrscheinlich vertraut mit gitignore und wir werden nur sagen, dass es das Herstellerverzeichnis ignorieren soll. Also hier haben wir unsere Abhängigkeiten heruntergeladen und wir sollten bereit sein, mit dem Programmieren zu beginnen. 6. Unsere erste Seite: Wir haben alle Abhängigkeiten installiert, die wir brauchen. Also lassen Sie uns jetzt voran und erstellen Sie unsere erste Seite. Also werden wir eine neue PHP-Datei erstellen. Und wir werden diese index.html HP nennen. Ich werde ein neues Verzeichnis namens öffentlich erstellen und es darin speichern. Und dann müssen wir ein paar Dinge einbringen. Also lasst uns in einige Namespaces laden. Ja, ja. Ich brauche die Antwortschnittstelle. Laden Sie die erste Antwort. Und dann und wir werden das gleiche die Anforderungsoberfläche tun. Und ich bringe auch in die schlanke Fabrik. Und dann wollen wir auch alle unsere Abhängigkeiten einladen und komponieren. Macht es wirklich einfach, das zu tun, indem nur die automatische Last verwendet wird. Und dann gehen wir weiter und wickeln uns ein. Also nennen wir es App. Und wir werden die App-Fabrik fragen und die Create-Methode aufrufen oder nicht. Und dann definieren wir unsere erste Rate. Also rufen wir die get-Methode auf, da dies eine GET-Anfrage sein kann. Und wir machen es vorerst einfach zu einem Schrägstrich. Und dann können wir eine Funktion definieren, um zu sagen, okay, wenn Sie diese Schrägstrich Route entsprechen, diese Homebrew diese Funktion ausführen. Und wir werden die Anfrage und die Antwort als Parameter übernehmen. Und dann in diesem, werden wir sagen, Antwort bekommen Körper. Und wir werden einen Text schreiben. Also lasst uns vorerst eine Hello World machen. Und dann geben wir die Antwort zurück. Sobald wir unsere Wurzeln definiert haben, können wir den Befehl Ausführen aufrufen. Also lasst uns das durchmachen, was wir hier drinnen tun. Hey, wir laden einige Namespaces und Pakete ein. Wir stellen dann sicher, dass wir alle Abhängigkeiten einschließen, die wir über Composer installiert haben. Wir erstellen unsere App hier mit Slims App Factory Create-Methode. Und dann definieren wir unsere Wurzeln. Und wir sagen, wenn irgendetwas mit dem Punktschrägstrich übereinstimmt, also führt die Homepage diese Funktion aus. Und diese Funktion wird Hallo Welt zu der Antwort schreiben und dann senden Sie diese Antwort an den Browser. Und wenn wir fertig sind, alles für die App zu bauen, rufen wir die Run-Methode auf, um schlank zu sagen, hey, jetzt ist das fertig. Und Sie können voran gehen und die App ausführen. 7. Das Projekt führen: Wir haben unsere erste Wurzel geschrieben, also lasst uns weitermachen und sehen, ob es funktioniert. Also kommen wir zum Terminal oder zur Eingabeaufforderung zurück. Und wir wollen in dieses öffentliche Verzeichnis gehen, was das ist, was das Web Root unserer Anwendung sein wird. All unser Code wird also außerhalb der Web-Wurzeln gehalten werden. Wenn etwas schief gelaufen ist, werden wir unseren Code enthüllen, aber dieses Bit wird öffentlich sein. Und wir können PHP ist interner Entwicklungsserver dafür verwenden. So können wir PHP dash S eingeben, und dann werden wir es bitten, einen Webserver auf localhost Doppelpunkt 8 Tausend laufen. Und großartig. Es läuft und läuft. So können wir jetzt zum Browser gehen und einfach localhost 8 Tausend eingeben. Und da gehen wir. Wir haben unsere HelloWorld, die in einem Browser funktioniert. Also haben wir unsere kleine Wurzelhaar Schrägstrich Hallo Welt geschaffen. Wir haben PHP ausgeführt ist lokaler Dev-Server und es hat funktioniert. Nicht furchtbar nützlich, aber Sie haben jetzt erfolgreich Ihre erste Anwendung in schlank geschrieben. Jetzt, da wir das laufen haben, machen wir etwas Interessanteres. 8. Routen: Jetzt haben wir unsere erste Route. Gehen wir weiter und fügen Sie eine zweite hinzu. Und dieses Mal lassen Sie uns etwas etwas interessanter machen als juts einen Schrägstrich. Sagen wir, hallo Schrägstrich Jane ist die Wurzel. Und wieder definieren wir eine Schließung, eine anonyme Funktion. Und wir haben wieder eine Leiche. Und diesmal sagen wir „Hallo Jane“. Und dann werden wir die Antwort wieder zurückgeben. Dies sieht genauso aus wie die oberste Zeile, außer dieses Mal haben wir eine Route von Schrägstrich Hallo Schrägstrich Jane gegeben. Fügen wir dort ein Semikolon hinzu. Und jetzt, wenn wir zu ihm zurückgehen, gehen wir Hallo, Flash Jane. Wir könnten neu wurzeln, Perfect. 9. Route: Das ist also irgendwie nützlich. Wir sind jetzt in der Lage, verschiedene Routen zu definieren. Aber viel Zeit, wenn wir mit PHP arbeiten, wollen wir, dass diese Wurzeln dynamisch sind. Wir wollen sagen, eine Variable übergeben können und vielleicht ist es die URL eines Blogbeitrags. Was wir tun können, dass mit Parametern. Also noch einmal, lassen Sie uns eine get-Anfrage definieren. Und diesmal sagen wir hallo. Und ich werde seinen Namen in geschweifte Klammern setzen, was Slim sagt, dass es ein Parameter ist. Und dann werden wir die Funktion wieder definieren. Und dieses Mal werde ich nach einem dritten fragen, das ein Array namens 4xh ist. Und das wird uns die Argumente geben, die in diesem Fall die Parameter sind, die Namen hier opfern. Und wir werden es kapitalisieren. Und dann greife ich auf das Argument-Array zu und ziehe den Namen heraus. Also, was auch immer jemand in die URL hier einfügt, sagen Sie könnten Schrägstrich Hallo Schrägstrich Chris tun. Dann wird das dann in das 4xh-Array übergeben. Und wir werden es hier kapitalisieren und darauf zugreifen können. Also lasst uns das in eure Antwort schreiben. Lass uns die Leiche wieder holen. Lasst uns das benutzen. Also sagen wir Hallo, geben Sie einen Namen. Und dann werden wir die Antwort wie gewohnt zurückgeben. Und ich muss schließen. So können wir jetzt jede Zeichenfolge in hier übergeben, jede Variable mit der URL, und es wird zu dieser Funktion zu erreichen. Also lasst uns das versuchen. Und wir werden vermisst, weil ich ein Extra hinzugefügt habe, dass wir gehen, haben wir hallo Chris, perfekt. Und ich könnte das ändern, oder ich könnte Hallo Sam sagen. Und Hinweise geben Jane auf. Aber wenn wir zu Jane gehen, wird es immer noch abgeschrieben werden, weil es die Wurzeln kaskadiert. Aber wenn es mit keinem von diesen übereinstimmt, können wir es nicht. Dicks Wildcard hier, wo wir einfach alles hineingeben können. Es wird genommen, dass der Name-Parameter hier in das Array übergeht, und wir ziehen das Array heraus und wir können mit der Funktion tun, was wir wollen. In diesem Fall schreiben wir es nur in diese Zeichenfolge. 10. Dienstleistungen: in diesem Modul werden wir uns die Abhängigkeitsinjektion ansehen. Mit jedem Web up haben Sie wahrscheinlich eine Reihe von Diensten wie Datenbankverbindungen, sexuell Management-E-Mails, mit denen Sie eine Verbindung herstellen möchten und in der Lage sein, einzurichten. Und wie managen wir all diese Abhängigkeiten? Nun, Slim hat keinen eingebauten Dependency Injection-Container, aber es macht es wirklich einfach, einen zu importieren. Also in diesem Modul werden wir Sprünge machen, dass und einige Dienste konfigurieren. 11. Dependency: Lassen Sie uns dieses Modul beginnen, indem wir uns einige der Theorie hinter der Abhängigkeitsinjektion ansehen. Wenn Sie also eine Webanwendung haben und wahrscheinlich eine Reihe von Diensten benötigen, gibt es eine Datenbank, mit der Sie eine Verbindung herstellen möchten. Sie möchten ein paar Vorlagen rendern, vielleicht hasst E-Mail. Sie möchten eine Art von Sitzungsdaten verwalten, und vielleicht möchten Sie Transaktions-E-Mails senden oder Leute in eine Art von E-Mail-Anbieter wie Mail-Schimpanse versetzen . Es gibt all diese externen Abhängigkeiten, mit denen Sie arbeiten möchten. Jetzt. Wie stellen wir sicher, dass zum Beispiel wir zum Beispieleine Datenbankverbindung haben wollen? Hat jede Klasse ihre eigene Datenbankverbindung, die schrecklich ineffizient ist? Und so benutzten wir damals das Singleton-Muster. Wenn Sie alt genug sind, sich daran zu erinnern, dass Andi jedes Mal, wenn Sie die Datenbank verwenden wollten, Sie die get-Instanz Methode aufrufen müssen, und das würde bedeuten, dass Sie immer nur eine Datenbankverbindung erstellen könnten. Und es war schrecklich, weil es einfach unmöglich war, Komponententest war das große Problem auf DSO . Wir sind zu der Lösung übergegangen, in der wir angefangen haben, Abhängigkeiten zu injizieren. Wenn Sie also eine Klasse wie diesen Controller erstellen, würden Sie die Datenbankinstanz übergeben, so dass, wenn wir sie testen, wir einen Mock dort übergeben könnten, der es uns ermöglicht, alle Tests durchzuführen, die wir brauchten. Das ist in Ordnung, aber es bedeutet, dass du Teoh brauchst. Lassen Sie alle Ihre Abhängigkeiten in die Klasse injiziert werden. Jedes Mal, wenn Sie eine neue Klasse, einen solchen Controller, schreiben , müssen Sie alles übergeben, was Sie brauchen. Und das könnte eine Menge Zeug sein. In einer großen Webanwendung gab es viele Dienste, so dass das neuere Modell darin besteht, einen sogenannten Container zu verwenden, und in einem Container weiß es, wie man auf alle Dienste zugreift, die Sie benötigen. So, zum Beispiel, in diesem Code hier, erstellen wir einen Container auf einen Datenbankdienst registriert wurden, sagten, Wenn jemand eine Datenbank will, hier ist die Klasse, die Sie benötigen. Hier ist, wie Sie Winston sie hasste Sie erstellen seine Datenbank-Klasse und ein Inside of wrap. Wir können mit dem Dependency Injection-Container sprechen und sagen, OK, holen Sie mir die Datenbank, und nur wenn wir diesen Dienst aufrufen, enthält er vor und erstellen dann die Instanz aus der Datenbank, aber wir nicht müssen das in der Klasse vorher registrieren. Wir können einfach anfangen zu codieren und sagen, Richtig, wir müssen auf unserem Dependency Injection Container Datenbank. Unser Service Lehrer weiß, wie man für uns aufsteht. 12. Ein DIC installieren: Slim enthält keinen Abhängigkeitsinjektionsbehälter mehr, der verwendet wird, um mit 1-Bit gebündelt zu werden. Die neuen Ausweichungen von schlanken Zweifeln. Also, wenn wir einen Tag wollen, müssen wir einen installieren. Das ist also ziemlich einfach, was hier in unserem Terminal ist. Und gehen wir zurück zu unserem Projekt. Und wir werden darum bitten. Also werden wir sagen, komponieren Sie es, benötigen PHP dash, dash d pi. Dies ist also ein Drittanbieter-Abhängigkeitsinjektions-Container. Es ist das beliebteste in PHP, also wird es gut gehen, wird einen Schritt voran komponieren und das installieren. Jetzt. Ich werde nur ein paar Sekunden dauern. Und es wird alle Abhängigkeiten herunterladen. Php DI braucht. Toll, also ist das erledigt. Und wenn wir einen Blick in unseren Händlerordner werfen, haben wir PID P d i darin. Großartig. Also hier sind wir in einer Indexdatei und wir können unsere Abhängigkeitsinjektion Verunreinigungen einrichten. Also werden wir wichtigen Namespace einbringen. Und dann direkt unter dem Punkt, wo wir unsere Abhängigkeiten eingebracht haben, werden wir weitermachen und einen Container erstellen. Wir wollen dies tun, bevor wir unsere Anwendung erstellen. Also werden wir einen Container erstellen und dann sagen wir Slim, dass wir diesen Container benutzen wollen. Also hier sind wir in einer Fabrik. Dies ist, wo wir schaffen sind schlank. Aber bevor wir das getan haben, haben wir diese Abhängigkeitsinjektion erstellt, die ein Paar enthält. Und wir setzen, sagte der AP Factory, dass, wenn wir eine App erstellen, wollten wir diesen Container verwenden. Und wenn es also das oben schafft, benutzt es das bereits, was großartig ist. Offensichtlich gibt es im Moment nichts in unserem Dependency Injection-Container, aber er ist einsatzbereit eingerichtet, so dass wir, wenn wir einige Abhängigkeiten haben, in die App injizieren möchten, einige Dienste, das können wir tun. Also lasst uns das in der nächsten Lektion tun. 13. Installieren einer Template-Bibliothek: Also im ursprünglichen Projekt haben wir gerade die Antwort bekommen und wir haben etwas rohes HTML geschrieben. Es gibt keine tatsächlichen HTML-Tags in Lebensräumen, in denen wir Widgets machen, die rohe HTML-Tags einladen. Und es wäre schöner, wenn wir eine Art Templating-Engine oder View-Engine haben , die das für uns tun könnte. Slim kommt nicht mit einem, also müssen wir einen zur Verfügung stellen und wir können verwenden, was auch immer wir wollen. Aber für die Zwecke dieses Kurses werden wir einen namens Schnurrbart verwenden. Also wieder, wir gehen zurück zum Terminal oder Eingabeaufforderung und wir werden tun Komponist erfordern, müssen Slash Schnurrbart fragen. Und wird Komponisten ein paar Sekunden geben, um das zu bringen. Schnurrbart ist eine wirklich einfache Vorlage in der Sprache. Also ist es großartig für diesen Kurs beabsichtigt Lernen, weil es ziemlich einfach zu verstehen ist, hat minimale Logik in der Vorlage. Großartig, so dass ist in, Jetzt lassen Sie uns gehen und installieren Sie dies in unserem Projekt. 14. Den DIC erstellen: Also haben wir unsere Templating und wir haben unsere Dependency Injection oder Service Manager installiert. Also lasst uns zuerst diese loswerden und dann im Behälter erscheinen. Lassen Sie uns dies so konfigurieren, dass, wenn wir auf einen Templating-Dienst zugreifen möchten, wir können, so dass wir einen Satz enthalten und wieder eine anonyme Funktion definieren. Haha, ich möchte meine Semikolons und früh holen, damit wir sie nicht vergessen. Und wir werden neuen Schnurrbart auf der SQL-Engine sagen. Und ich übergebe sie hier die Konfiguration. Wir werden das in einer Minute durchmachen. Für den Moment. Holen wir uns einfach einen Code runter. Okay, das sieht gut aus. Also setzen wir einen Dienst namens Templating. Das bedeutet, dass, wenn wir in, wenn wir unsere Wurzeln definieren und wir versuchen, auf die Templating gewartet zugreifen, es diese Funktion ausführen wird, und diese Funktion wird uns diese Schnurrbart Engine liefern, die die Schnurrbart Templating ist -Dienst. Jetzt fragen Sie sich vielleicht, Okay, wir haben alle Namespaces importiert, die für alles andere erscheinen. Warum müssen wir das nicht mit Schnurrbart machen? Und das liegt daran, dass Schnurrbart im Root-Namespace ist und wir hier im Root-Namespace sind. Also, sagen wir, diese Datei, würde es eine Definition an der Spitze geben, die Namespace deal.II sagt. Und dann würde es wie Klassencontainer sagen. Und deshalb müssen wir es aus diesem DI, Namespace, importieren. Aber die Schnurrbart-Engine hat diese Namespace-Deklaration nicht und daher müssen wir keine Aussage für Au Pair machen. Zweitens, Was machen wir hier? Nun, wir sagen Schnurrbart, woher die Vorlage laden soll, und wir werden bald das Verzeichnis dieser Vorlage erstellen. Also sagen wir, generieren Sie mir einen Schnurrbart Motor. Und wenn Sie die Vorlage laden müssen verwendet den Dateisystemloader und laden Sie es von diesem Speicherort und nicht automatisch irgendwelche Erweiterungen. Sie könnten also, wenn Ihre Vorlagen alle Punkt-HTML genannt werden, können Sie es dort hinzufügen. Aber ich denke, es ist einfacher, dies während wir gehen zu definieren. Also laden wir es aus der Vorlagendatei und wir werden nur den Dateinamen laden, wir geben es n. Schauen wir uns an, wie dies, wir tatsächlich verwenden dies in der nächsten Lektion. Und dann wird das alles anfangen, zusammen zu kommen und viel mehr Sinn zu machen. 15. Den templating verwenden: Nun, da wir Templating-Dienst konfiguriert haben, lassen Sie uns voran und verwenden Sie es. Also kommen wir hier runter, nachdem wir die App erstellt haben und wir werden eine Route erstellen und sagen hallo, Name genau wie beim ursprünglichen Projekt. Und wieder werden wir die anonyme Funktion definieren. Also nehmen wir unsere Suche und unsere Antwort und einige Argumente. Ok, nett. Und wird sagen, dass wir den Templating-Dienst bekommen. Und wir werden die zufällige Methode aufrufen, die eine Schnurrbart Methode ist, die besagt, etwas HTML zu rendern. Und wir geben ihm einen Vorlagennamen, hello.html. Und dann werden wir auch Variablen übergeben. Die Art, wie Sie Vorlage rendern, ist, dass Sie Schnurrbart sagen, welche Vorlage Sie rendern möchten und welche Variablen Sie in diesem Fall hinzufügen möchten, werden wir nur gehen, ich werde ihm eine Variable namens Name übergeben. Und wir werden das die Argumente hochziehen, die natürlich diesen Kopf nehmen werden, den wir hineingehen. Das wird also diese HTML-Zeichenfolge generieren. Und dann können wir Antwort sagen, Körper bekommen, richtig? Wir werden unser HTML schreiben und dann werden wir die Antwort zurückgeben. Okay, das sieht ziemlich nett aus. Lassen Sie uns fortfahren und eine Vorlage in der nächsten Lektion erstellen. 16. Erstellen einer Vorlage: Lassen Sie uns dann eine Vorlage erstellen. Das ist also wirklich einfach. Wir werden einen Panzer in Höhe eins benutzen. Ich werde hallo sagen. Und Schnurrbart verwendet dieses doppelte geschweifte Klammern System für alle Variablen, die Sie übergeben möchten. Und das war's buchstäblich. So können wir das speichern, nennen Sie es hello.html. Und in unserem Arbeitsbereich werden wir ein Template-Verzeichnis erstellen und das speichern. Großartig. Also schauen wir uns an, was hier vor sich geht. Wenn wir diese Route mit sagen aufrufen, Holen Sie sich die Vorlage und Service, rendern Sie diese hello.html, die wir sagten, schauen Sie in das Template-Verzeichnis, Übergabe dieser Namensvariable. Und dann eine Vorlage. Wir haben das Einrichtungspaar. Also sollte das alles bereit sein, jetzt zu gehen. 17. Eine Seite rennen: Also sind wir jetzt bereit, unsere Projekte oder nur 0,1 winzigen Syntaxfehler auszuführen. Das sollte erwachsen sein. Das sieht gut aus. Also gehen wir hinein und gehen in unser öffentliches Verzeichnis. Und wieder, wir laufen PHP ist lokaler Entwicklungsserver, also werden wir Pitch P dash S, localhost, 8 Tausend tun. Okay, jetzt definieren wir die Wurzeln Hallo Schrägstrich Namen. Also lasst uns versuchen, Schrägstrich Kim. Perfekt. Also haben wir ein H1-Tag. Also geben wir hier den Namen an, wie jeder Name hier sein könnte. Das wird hier als Streit weitergegeben. Und wir nehmen ein Argument mit dem Senden an Schnurrbart, um diese Hallo Vorlage zu rendern. Wir fallen in Haha, Great. So funktioniert jetzt ein Templating-System. 18. Controller: wir haben bereits einige Seiten geschrieben. Wir haben einen Service zur Verfügung gestellt, der uns hilft, diese Seiten zu leihen, aber im Moment ist er nicht super skalierbar. Es ist das meiste in einer Datei. Und wenn wir eine größere Anwendung schreiben wollten, würde es ein bisschen chaotisch werden. Also, wie machen wir das? Wird schlanke Skalierungen wirklich schön, weil wir Controller auf die gleiche Weise verwenden können, wie wir Controller in einem größeren Framework verwenden würden . Aber sie schlitzen wirklich schön in schlanke als auch. Und in diesem Modul werden wir uns ansehen, wie das geht. 19. Erstellen eines Controllers: der Lage zu sein, unseren ganzen Code in eine Datei zu stecken, ist nützlich, wenn wir nur ein kleines Projekt haben und die Dinge schön und einfach halten, was passiert, wenn Sie ein größeres Projekt haben? Wenn wir 20-30 Wurzeln haben, dann wird index.js HP plötzlich riesig sein. Stattdessen können wir Dinge in separate Dateien aufteilen und wir können Controller verwenden, Rucke wie Sie einen Controller und ein größeres Framework wie Symphony oder Lera val verwenden könnten. Sie können Controller auch in Slim verwenden. Es ist Ihre Wahl, ob Sie alles in einer Datei ablegen oder aufteilen möchten. Also lassen Sie uns voran gehen und Controller erstellen. Und ich werde das beim ersten Kontrolleur speichern. Und ich werde es sagen, ich werde Chris Quellverzeichnis. Und dann im Inneren werde ich Controller-Verzeichnis erstellen und uns den ersten Controller speichern. Ok, großartig. - Schön. Also zuerst werde ich einen Namespace geben und dann werden wir die Anfrageantwort einbringen wollen. Lasst uns sie einfach schnappen. Und dann werde ich auch diese Containerschnittstelle einbringen und wir nutzen diesen Ventilschaden auch. Und dann werde ich einfach diesen Controller definieren. Wenn also nützlich ist, was mit Slim passiert ist, dass, wenn es diesen Controller vorwärts erstellt, es den Abhängigkeitsinjektionscontainer, die Containerschnittstelle, übergibt. Die CPU ist also voll. Wir können das in dieser Instanzvariablen hier speichern. Und dann greifen wir, wenn wir auf unsere Dienste zugreifen wollen, auf unsere Dependency Injection Container Gunst unten zu. Wir haben es für diese Variable bereit. Gut traf seinen Privaten, weil wir niemanden brauchen, um jetzt darauf zugreifen zu können. Und dann definieren wir eine Methode. Lassen Sie uns also eine Homepage-Funktion definieren und die anonymen Funktionen in index.html verkleinern. Wir werden hier eine Anfrage und eine Antwort erhalten und auf unseren Container zugreifen. Und wieder werden wir sagen, bekommen Templating, sagen rendern Homepage, dass HTML, Tony, um alle Variablen zu übergeben. Und an diesem Punkt, und wieder werden wir sagen, get body und rufen Sie die Schreibmethode, übergeben Sie den HTML-Mann. Und es würde helfen, wenn ich die Rückkehr richtig buchstabieren könnte. Ok, nett. Statt einer anonymen Funktion haben wir jetzt diesen Controller mit dieser Homepage-Methode in, in der nächsten Lektion, gehen wir weiter und erstellen diese Homepage-Vorlage. 20. Erstellen der Vorlagen: Wir haben hier unseren Controller erstellt. Also lassen Sie uns voran und erstellen Sie diese Homepage-Vorlage. Also werde ich hier eine neue Datei erstellen und wir werden einige Includes verwenden. Die Art und Weise, wie wir das in Schnurrbart tun, ist mit den geschweiften Klammern und dann größer als Pfeil. Und dann legen wir eine Vorlage an. Und dann werden wir den Hauptkörper erstellen. Sag mal, willkommen auf meiner Homepage. Danke für Ihren Besuch. Und ich werde diese Include-Syntax wieder verwenden, um die Fußzeile einzublenden. Und wir speichern dies als Homepage-HTML. Und wir werden das in das Template-Verzeichnis einfügen. Noch ein paar Dinge, die wir brauchen. Also müssen wir tatsächlich diese Kopfraumfußzeile erstellen. Jetzt können Sie diese manuell erstellen, aber Sie können sie auch einfach aus dem Beispielcode kopieren und einfügen. Also, wenn wir in Wind gehen Projekt drei hier. Also lasst uns voran gehen und diesen Header nehmen. Und wir speichern dies einfach als Header, wo immer Sie arbeiten. Und Fotos sollten auch ziemlich unkompliziert sein. Wieder ziehen wir das auf. Und eine der Dinge, auf die wir achten möchten ist n-x-Header enthält diese style.css. Also lasst uns voran und schnappen uns das auch kostenlos. Es ist im öffentlichen Verzeichnis. Also style.css und ich kenne Arbeitsbereich. Wir speichern das im öffentlichen Verzeichnis. Also, das ist, ich werde die Dinge auch hübscher machen. Großartig. Also haben wir unsere Vorlage hier, wir haben unseren Controller hier. Wir müssen jetzt nur alles verdrahten. 21. Autoloading: In den alten Zeiten von PHP, sobald wir diesen ersten Controller haben, könnten wir hier kommen und ist so etwas wie erfordern Sauce rollen kann. Erster Controller. Aber das ist eine echte Masse, weil dann der Code eng gekoppelt und wirklich schwer zu testen ist. Stattdessen können wir jetzt das automatische Laden basierend auf dem Namespace verwenden , weil wir diesen Namespace oder Payer gesetzt haben. Also lasst uns weitermachen und das konfigurieren. Wir müssen zu unserer Komponisten-Akte kommen. Und wir werden in einem neuen Abschnitt hinzufügen, der hier Auto-Load genannt wird. Und es wird ein PSR für und wir werden sagen, bei Schrägstrich. Also alles, jeden Namespace, der mit einer App beginnt, sollten Sie automatisch aus dem Quellverzeichnis laden. Das bedeutet, dass, wenn wir versuchen, den Referenz-App-Controller, den ersten Controller, zu lesen , es wird sagen, okay, beginnt mit einer App. Also schauen Sie in das Quellverzeichnis, und dann wird es sagen, OK, es ist im Controller und es ist der erste Controller. Das bedeutet also, dass PHP helfen wird, es magisch zu finden. Also das nächste, was wir brauchen, um zu unserem Terminal zu gehen und nur den Composer zu aktualisieren. Lassen Sie den Komponisten. Jetzt ist das passiert. Also gehen wir zurück auf die Route hier und lassen Sie uns Composer Dump machen, Strich Auto Load. Wir können die Composer-Dateien auch vollständig regenerieren. Aber wenn Sie nur das automatische Laden aktualisieren möchten, dann Composer Dump Dash Autolite, wir tun, was wir brauchen. Ok, großartig. Das hat also einige neue Autopilot-Dateien generiert und jetzt sollten wir bereit sein, sie zu vernetzen. 22. Routen zu einem Controller: Lasst uns weitermachen und diesen Controller verdrahten. Also werden wir diesen alten Code aus dem ersten Projekt loswerden. Und wir haben kein get root wieder definiert. Und wir machen es einfach zur Wurzel. Normalerweise übergeben wir hier eine anonyme Funktion, sagen wir, Okay, wenn Sie mit dieser URL übereinstimmen, dann liefern Sie diese. Und wir werden eine ähnliche Sache hier tun, aber anstatt es funktionieren zu lassen, werden wir eine Klasse und einen Methodennamen übergeben. Also sagen wir App-Controller erster Controller, das ist der vollständige Namespace-Pfad. Und wir werden sagen, Doppelpunkt Homepage. Dieser Doppelpunkt ist also eine schlanke spezifische Syntax, die besagt, dass dies die Klasse ist, das ist die Methode für diese Klasse, weil wir das nennen, was wir hier ausführen wollten. Und das ist buchstäblich alles, was wir tun müssen, um es zu verdrahten. Also lasst uns weitermachen und den Entwicklungsserver in die Luft sprengen und sehen, wie er läuft. 23. Testen des Controllers: Wir kommen zu unserem Terminal und wir werden in das öffentliche Verzeichnis einführen. Und dann wie normal, wird PHP zu Site Development Server sagen. Größte läuft auf localhost 8,000.5, wir bekommen einen localhost 8 Tausend. Perfekt. Wir haben unsere Homepage. Wir haben unsere Homepage-Rendering hier draußen. Und es ist noch mehr in unserem Header als auch in unserem Stylesheet. Und alles sieht gut aus. 24. Abstrakte Controller: Das sieht so aus, als ob es großartig funktioniert. Aber im Moment würde es bedeuten, dass wir, wenn wir diesen Controller erstellen, diesen ganzen Code jedes Mal tun müssen. Es wäre schön, wenn wir eine Menge davon vereinfachen könnten. Was wir also tun könnten, ist, einen abstrakten Controller zu erstellen, um eine Menge von diesem Wald zu machen. Gehen wir also weiter und machen das jetzt. Lassen Sie es einfach als Basis nehmen, nennen Sie es Controller dot PHP, und wir können von dort aus arbeiten. Also werde ich das zu einer abstrakten Klasse machen. Wenn wir also nicht direkt instanziieren können, müssen Sie eine andere Klasse verwenden. Und wir nennen es „Controller“. Und wir werden dies ändern, um es zu schützen, weil wir möchten, dass unsere Kind-Klassen es verwenden können. Und dann kommen wir zurück zu dieser Homepage-Methode hier. Und wir werden eine Funktion namens rendern erstellen, die einige der schweren Heben in Bezug auf das Rendern von HTML ausführen wird. Also werden wir eine Antwort nehmen, einen Vorlagennamen nehmen, und wir werden alle Daten und Variablen nehmen, die ein eingebrochen werden will, was standardmäßig ein leeres Array sein wird. Und dann werden wir viel dasselbe tun, was wir in einer normalen Funktion tun, und wir werden den zufälligen Aufwand nennen. Okay, das sieht gut aus. Das ist also ein Controller, von dem wir jetzt erweitern können. Und lassen Sie uns voran gehen und Controller erstellen, der das verwendet. Also werden wir das nicht brauchen. Und rufen wir den zweiten Controller an. Toll, wir werden das retten. Und wir brauchen diesen Code nicht mehr, weil er sich in ihrem Elternteil befindet, obwohl er sich erweitert. Also werden wir den Controller erweitern. Und lassen Sie uns auch das Nest loswerden. Und jetzt werden wir eine normale Funktion erstellen. Also nennen wir das hallo. Und jetzt können wir diese spezielle Methode verwenden, die wir auf unserem Basiscontroller erstellen. Also werde ich das Antwortobjekt übergeben. Vorlage wird hallo genannt werden. Und jetzt lasst uns das einfach hart programmieren. Okay, das sieht ziemlich gut aus. Also haben wir unseren zweiten Controller, der unseren Basis-Controller-basierten Controller erweitert, richtet Dinge wie das Nehmen des Dependency Injection-Containers und das Einfügen einer Instanzvariablen ein. Und es gibt Ihnen diese zufällige Anstrengung, macht einen Großteil der schweren Heben der Nutzung dieses Waldes. Also, dass wir hier nur sagen müssen, okay, es wird hallo sein. Und wir wollen nur Namenquests hervorheben. Und dann brauchen wir nur diesen Vorlagendateinamen. Ich habe das hier rumhängen, aber lassen Sie es uns beschleunigen. Also bringen wir die Kopf- und Fußzeile ein, oder wenn Sie sie löschen, können Sie es einfach von Grund auf neu erstellen. Ok, Deluxe, perfekt. Also haben wir unseren grundlegenden Controller, wir haben unseren neuen Controller und wir haben unsere Vorlage. Gehen wir weiter und verdrahten das alles. 25. Testen des abstrakten Controllers: Gehen wir weiter und verdrahten wir diesen zweiten Controller. Also kommen wir hierher zu unseren Wurzeln und definieren eine neue Route. Und sag einfach hallo. Wieder. Wir geben ihm einen vollständigen Weg. Es ist also der zweite Controller. Und die Methode hieß hallo. Wenn wir jetzt zu unserem Entwicklungsserver gehen, müssen wir hallo. Perfekt, also haben wir hallo chris, das ist die Variable, die wir übergeben haben, und wir haben eine Kopf- und Fußzeile und funktionieren auch. Das ist ziemlich ähnlich zu dem, was wir anfangs getan haben. Aber wenn Sie sich im ersten Controller daran erinnern, dass hier und hier drin eine ganze Menge Boilerplate-Code passiert. Während dieser zweite Controller, jetzt verstecken wir viel davon in diesem abstrakten Controller. Dies ist viel schöner, weil es buchstäblich eine Zeile ist, um eine Vorlage zu rendern. Wir müssen in diesem Fall nicht einmal die Vorlage im Service berühren. Aber wir werden dies immer noch so geschützt halten damit wir hier über Dienste zugreifen können, wenn wir wollen, und wir werden später im Projekt. Aber es macht es einfach super schön und sauber, wenn Sie dieses abstrakte Controller- und ChildController-Muster verwenden . 26. Anfrage und Antwort: in diesem Modul. Wir werden uns ansehen, wie wir die Anforderungs- und Antwortobjekte ändern. Was passiert also, wenn wir Informationen aus der Abfrage, der Zeichenfolge oder dem Formular abrufen möchten? Was passiert, wenn wir verschiedene Formen von Daten zurücksenden möchten, wie Jason? Oder vielleicht wird eine Weiterleitung all das in diesem Modul aussehen, und die Dinge werden ein bisschen interessanter auf dem Produkt. Front wird etwas etwas mehr schreiben und dass wir durchsuchbare Aufzeichnungen erstellen werden, Got Lord genannt Rockin Records. 27. Rocking: In diesem Projekt erstellen wir einen durchsuchbaren Musikkatalog namens Rockin Records. Es gibt ein paar Dinge, die wir tun müssen, bevor wir anfangen. Also, wenn Sie in Project für das Datenverzeichnis gehen und es gibt einen Punkt JSON eines Albums. Das brauchen wir. Speichern Sie dies einfach als Alben in JSON in einem Datenverzeichnis. Und in Vorlagen. Wir haben diesen aktualisierten Header. Lasst uns weitermachen und das quer kopieren. Und schließlich gibt es im öffentlichen Verzeichnis auch ein aktualisiertes Stylesheet. Also bringen Sie diese drei Akten rein und dann sind wir bereit, loszulegen. 28. Erstellen der Homepage: In dieser Lektion erstellen wir eine Homepage für den Datensatzkatalog. So können wir voran gehen und diesen ersten Controller loswerden. Und Hoppla, Bereich. Benennen Sie diesen hier einfach um. Und wir rufen diesen Suchcontroller an. Und lassen Sie uns es hier umbenennen, um diese Methode ihn loszuwerden, lief ich von Grund auf neu. Also sagen wir öffentliche Funktion, nennen wir es einfach Standard. Es wird die Standardseite sein, die Homepage. Und viel werden Anfragen. Und ich werde keine Antwort sagen. Ausgeglichene Formel schön. Da gehen wir. Und dann hier, lasst uns die Liste der Alben holen. Also verwenden wir benachbarte Decode-Methode und die Datei erhalten Inhalt. Und wir gehen in das Datenverzeichnis und wir nennen das Album Punkt JSON. Also JSON dekodieren, Sie können es als Objekt oder ein Array haben und wir wollen als Array. Und dann machen wir weiter und rendern hier eine Seite. Also werden wir in der Antwort übergeben wird HTML Standard. Und wir werden die Alben dort vorbeigehen. Richtig? Also haben wir die Root-Funktion definiert. Wir haben gesagt, dass Array von Alben und übergeben Sie es an die Vorlage. Lassen Sie uns also voran und erstellen Sie auch eine Vorlage dafür. Look zahlt auch Standards, also sagen wir Header. Und wenn wir eine Schleife im Schnurrbart machen wollten, verwenden wir diesen Hash und einen Schrägstrich, um ihn zu beenden. Und dann bringen wir auch unsere Fußzeile hier runter. Speichern Sie diese und Vorlagen. Und dann innen hier für jedes Album, Lassen Sie uns div erstellen. Lassen Sie uns den Titel und den Namen des Künstlers ausdrucken. Ok. Nun, das ist gut zu mir. letzte Sache ist, und lasst uns das verdrahten. Also gehen wir in unsere index.html, werden zu diesem alten Code gegeben und wir sagen App. Und wir definieren eine Get Route. Es wird den App-Controller bekommen, Such-Controller Standard. Ok? Und wenn wir gehen zurück zu unserem Entwicklungsserver und perfekt, Dort gehen wir. Also haben wir standardmäßig diese Homepage, Rakim-Aufzeichnungen, und ich habe den Künstler hier vermisst. Also lasst uns voran gehen und Probleme beheben. Und da sind wir los, Mr. T, ich bin perfekt. So haben wir nun den Albumnamen und den Namen des Künstlers auf der gleichen Seite angezeigt. 29. Suche mit query: Wir sagten, wir wollten, dass der Katalog durchsuchbar ist. Lassen Sie uns also voran gehen und erlauben Sie uns, mit Abfragezeichenfolgen zu suchen. So können wir diese Methode einfach kopieren und einfügen und wir werden sie suchen nennen. Okay, jetzt ich, also müssen wir noch unsere Alben einladen. Aber wir müssen auch die Abfragezeichenfolge erhalten. Und das wird Q heißen. Also hey, wir ziehen die q Abfragezeichenfolgenvariable aus der Anfrage. Und dann sagen wir, Okay, wenn es eine Abfrage gibt, dann filtern wir dieses Array. Also werden wir Array-Werte verwenden. Filtern Substantive , um Album zu sein. Wir haben ihn fit und es, wenn wir den Code runter haben. Und dann hier unten, rendern Sie aus, was die Vorlage ist, die wir erstellen werden. Okay, was wir hier tun, nun, wenn wir eine Abfrage bekommen, wenn wir keine Abfrage bekommen, werden wir sie einfach ignorieren und alle Alben drehen. Aber wenn wir eine Abfrage haben, dann werden wir diese Alben nehmen und wir filtern sie basierend darauf , ob die Abfrage im Titel oder im All-Test ist. So können wir jetzt voran gehen und eine Suchvorlage erstellen. Es geht in den Vorlagenordner, bekam Standard. Haha, lassen Sie uns einfach kopieren und einfügen diese namens search.html. Und wir gehen weiter und beenden das Telefon. Ok, sieht nicht nett aus. Also haben wir Vermögenswerte von hier, die Alben, wir haben hier eine Methode. Also lasst uns weitermachen und verdrahten. 30. Suche führen: Lass uns voran gehen und die Suche von Chin verdrahten und überprüfen, ob es funktioniert. Also werden wir Index Dot PHP öffnen und wir werden hier eine neue definieren. Es wird sein, Ru Schrägstrich Suche zu bekommen und es an App-Controller, wie Controller, zu verdrahten. Und wir nennen den Methodensatz. Großartig. Also gehen wir zu unserer Entwicklung, was auch immer. Wir haben einen Schrägstrich suchen. Das sieht gut aus. Also haben wir hier ein Suchfeld, und wir haben alle von uns Alben hier nicht wissen, ob gefiltert werden. Und lasst uns voran gehen und suchen, dass ich zur Miete komme. Und perfekt. Es wird alles auf die Alben mit dem Albo-Namen des Künstlers in diesem String gefiltert . Das funktioniert also perfekt. 31. Form: In diesem ersten Beispiel haben wir eine Abfragezeichenfolge verwendet. Also, wenn wir einen Satz machen, erscheint es in der URL. Aber was passiert, wenn wir eine Formulareinreichung mit Post machen wollen? Das ist ganz einfach zu tun. Lasst uns durchgehen, wie wir es machen. Also beginnen wir mit der Suchvorlage. Wir werden eine Kopie davon machen und wir werden es einfach als unser HTML bezeichnet. Und wir werden die Methode hier in eine Post-Methode ändern. Und dann hier werden wir diese Suchmethode kopieren und einfügen. Und wieder nennen wir es Form. Und das wird fast genau dasselbe funktionieren, aber weil es jetzt eine Post-Variable anstatt eine Abfragezeichenfolge ist, anstatt Abfrageparameter zu erhalten, was sagen wird, get Program. Und wir müssen dies ändern, um Sie auf neue Vorlage. Ok, reizend. Und dann im nächsten Schritt, PHP-App-Steuerelement PHP-App-Steuerelement Set Controller-Formular. Also, wenn ich jetzt gehe, um zu bilden, B, einen Doppelpunkt, dann gehen wir. Ok, perfekt. Und das sieht gut aus, aber wenn ich hier eine Suche durchführe, wird es nicht funktionieren. Denn wenn wir die Route definieren, haben wir sie definiert, das Ghetto und jetzt versuchen wir es zu posten. So könnten wir das ändern, um zu posten. Aber dann, wenn wir einfach versuchen und laden es normalerweise wird sagen, es ist kein get rw ist der Postraum. Stattdessen können wir das Verb beliebig verwenden. Und das wird sowohl GET als auch Post ermöglichen. Also müssen wir es jetzt tun. Aber es ist in Ordnung. Und einen Suchbegriff setzen, großartig. Es poste es jetzt, es ist nicht mehr in der URL, aber wir können immer noch darauf zugreifen. Es ist eine Menge sieht perfekt aus. 32. Slim HTTP: Vielleicht sehen Sie sich einige der Methoden an, die wir hier verwenden. Holen Sie Abfrageparameter für das Anforderungsobjekt und denken Sie, ich kann diese Methode nicht in den schlanken Docks finden, wo ist sie? Und das liegt daran, wenn es um die Anforderungs- und Antwortobjekte geht , ist leider etwas komplizierter. Also erinnerst du dich, als wir die Dinge zum ersten Mal aufgebaut haben, haben wir Slim hergebracht. Wir werden auch in diesen beiden Request- und Response-Bibliotheken gehen, die PSR sieben und HTTP sind. Und das liegt daran, dass Sie diese tatsächlich gegen verschiedene Bibliotheken austauschen können, wenn Sie dies möchten. Jetzt brauchen wir zu 99% der Zeit, die Sie einfach verwenden können, aber es ist, was wir entkoppelt nennen, so dass Sie etwas anderes tauschen können. Und das bedeutet, dass wir leider versuchen, die Dokumente zu finden. Es ist vielleicht nicht an einem Ort, den Sie erwarten. Also, wenn Sie die Methode in schlankem Ochsen nicht finden können, Das erste, was ist, die PSR sieben Dokumente zu betrachten. Psr sieben ist ein Standard. Es ist also keine bestimmte konkrete Bibliothek, sondern Standard, der von einer Reihe verschiedener Frameworks verwendet wird und über das Framework hinweg funktioniert. Also, wenn es eine Methode auf haha, die Sie verwenden möchten, dann wird dies in schlank, aber es war auch verfügbar in Lera val und Symphonie und alles, was das Paar verwendet sah sieben Standard. Ihnen wird geholfen, die gleichen Standardmethoden zu verwenden. Und dann oben darauf, gibt es schlanke Hilfsmethoden, weil PSR sieben für sich nicht viel zur Verfügung stellt. Es gibt also auch die schlanke HTTP-Bibliothek, die viele wirklich nützliche, einfache Funktionen wie Rückgabedaten mit JSON bietet . Oder ist dies eine Umleitung oder bekommen Sie die Parameter und wie die Vergangenheit Körper. Also, wenn Sie über nass verwirrt sind, nass, um eine Methode zu finden, wenn Anfrage und Antworten nicht in den schlanken Hunden zu tun. Es könnte in der PRC sieben Dokumente sein, es könnte in den schlanken HTTP-Dokumenten sein. Leider ist die Art und Weise, wie wir Dinge jetzt entkoppeln und es Ihnen erlauben, verschiedene Bibliotheken zu tauschen. Und sie sind jetzt bedeutet, dass es in einer Reihe von verschiedenen Dokumentationen sein könnte und es ist ein bisschen verwirrend. Aber es macht Projekte viel kompatibler und erweiterbar. Und es gibt gute Programmiergründe, dies zu tun, obwohl es die Dokumentation etwas mehr durcheinander bringt. 33. JSON Antworten: Bisher haben wir mit HTML gearbeitet. Was passiert, wenn wir mit über Formaten wie Jason arbeiten wollen? Nun, das ist ziemlich einfach zu tun. Schauen wir uns also ein Beispiel an, wie wir das tun würden. Und wir können schließen Netz diese Dateien öffnet den Suchcontroller. Und wir werden einfach kopieren und in Farbe API Controller Dot PHP in unserem Controller-Verzeichnis einfügen. Können wir das für die Methode tun? Und wir werden diese Standardmethode auch loswerden. Und ich vergesse, die Klasse umzubenennen. Ok, reizend. Also das einzige, was wir tun müssen, weil schlank macht es schön und einfach ist beabsichtigt. Anstatt etwas HTML zurückzugeben, werden wir einfach Jason zurückgeben. Also sagen wir Antwort mit Jason, das ist eine dieser Hilfsmethoden schlank, HTTP bietet. Und wir werden in der Alben-Reihe vorbeikommen. Es ist also der gleiche Code wie zuvor, aber wir verwenden dies nur mit der JSON-Methode. Und dann, wenn wir Index.html Seite öffnen, lassen Sie uns eine neue Regel hinzufügen. Und der App-Controller, API-Controller. Und ich denke, wir nannten es, sagte, wir änderten den Namen. Jetzt, wenn wir zur API kommen, perfekt, haben wir alle unsere JSON-Daten dort und wir können sogar die Abfrage ausführen. Und es wird auch nach unten filtern. Ok, reizend. 34. Response: Bis jetzt alles, was wir zurückgegeben haben, als mit 200 Antwortcode. Es war also eine glückliche Antwort. Aber was passiert, wenn wir so etwas wie Flora Follower oder 500 oder so etwas brauchen ? Nun, lassen Sie uns dieses Jason-Beispiel nehmen und sagen wir, es muss eine Abfrage geben. Wenn Sie also keine Abfrage hier übergeben, anstatt alle Daten zurückzugeben, wird es immer sagen, Sie etwas übergeben müssen. Lassen Sie uns unseren API-Controller öffnen und wir bekommen unsere Abfrage hier. Also sagen wir, okay, wenn die Abfrage leer ist, dann werden wir einen Fehler zurückgeben. Also sagen wir Antwort mit einem Status von 400. So ist 400 eine ungültige Anfrage. Seite nicht gefunden wäre 404, aber in diesem Fall möchten wir eine ungültige Anfrage für eine 100. Und wir werden immer noch etwas JSON zurückschicken. Und wir können diese Methoden einfach miteinander verknüpfen. Und wir werden sagen, ungültige Bitte. Okay, großartig, das ist alles, was wir tun müssen, wenn die Abfrage leer ist, geben Sie keine ungültige Anfrage zurück. Da gehen wir. Also, wenn wir die Abfrage übergeben, haben wir immer noch eine Daten. Aber wenn nicht, erhalten wir diese ungültige Anfrage. Und wenn wir uns Netzwerkkopfzeilen ansehen, können wir sagen, dass wir einen 400-Fehler anstatt einen 200-Fehler bekommen. Ok, das ist nur ein paar Tracking, also das ist die normale. Dies ist die Anfrage, die wir gestellt haben, und wir erhalten eine ungültige Anfrage und es wird rot angezeigt, weil wir erfolgreich eine Ara zurückgegeben haben. 35. Fehler reagieren: Trotz unserer besten Absichten, Manchmal geht es schief auf, wenn sie es tun. Wir wollen in der Lage sein, das anmutig umzugehen und Dinge so gut wie möglich für den Benutzer in seiner Erfahrung zu machen . In diesem Modul werden wir uns die Fehlerbehandlung ansehen, und wir werden einen wirklich einfachen E-Commerce-Store schreiben, der Fahrräder auswählt. Es wird nur eine Liste von Fahrrädern und Details Seite sein, und wir werden sehen, was passiert ist, wenn der Benutzer verloren geht und einen Fehlerbildschirm sehen muss . 36. Fahrradgeschäft: In diesem Modul werden wir einen Fahrradladen erstellen. Es gibt also ein paar Ressourcen, die von Projekt fünf benötigt werden. Also im Datenverzeichnis haben wir diese Fahrräder Jason, und speichern sie in unserem Arbeitsbereich. Und dann im öffentlichen Verzeichnis haben wir einige aktualisierte Stile. Und dann können wir diesen Header auch manipulieren. Und wir sind bereit, mit dem Programmieren zu beginnen. 37. Bikes: Wir werden damit beginnen, eine Homepage für unseren Shop zu erstellen. Lassen Sie uns also einen Controller erstellen, den wir Shop-Controller nennen. Und wir geben ihm einen Namespace, der Slash-Controller sagt. Und lasst uns diesen Namespace-Impuls auch hier greifen. Und ich bin nicht nur krit Standard-Controller. So scharfe Controller erweitert Controller. Nehmen Sie eine Anfrage an und eine Antwort ist normal. Und wir werden die Byte-angegebenen Juts wie früher greifen , genau wie wir es mit den Datensatzdaten getan haben. Schön. Und ich werde das verwenden, um die Seitenübergabe in der Reihe von Fahrrädern zu rendern. Okay, sieht gut aus. Lassen Sie uns also voran und erstellen Sie diese Standardvorlage auch. Standard-Punkt-HTML wird durch die Fahrräder schleifen. Ist ein bisschen CSS Pre-Create Flores und CSS, die wir kopiert haben. Und wir wollen, dass dies auf eine Detailseite verlinkt wird, die wir später erstellen und den Byte-Namen auch in ty pen setzen . Und dann gingen wir hier ein kleines Bike-Emoji. Also können wir das einfach aus der Vorlage in Projekt fünf stehlen. Und dann endlich, lasst uns reingehen und warum diese Regel. Also sagen wir Controller, Shop, Controller Doppelpunkt Standard, und das sollte bereit sein zu gehen. Also lassen Sie uns den Dev-Server in der nächsten Lektion starten und sehen, wie er funktioniert. 38. Testen der Homepage: Eine wichtige Änderung, die wir brauchen, um dies als Vorlage zu machen. Ich werde das von Div zu Spam ändern. Die Matterung sieht gut aus. Also lassen Sie uns zu unserem Terminal oder Eingabeaufforderung gehen und wir werden es auf localhost 8 Tausend starten. Schön. Und dann im Browser gehen wir zu localhost 8 Tausend. Und hier haben wir unsere Homepage, Tri-Bike-Shop. Allah Bikes, die mit ihren Namen aufgeführt sind, sind mit den Details und dem Typ als auch verknüpft. Aber in dem Moment, in dem es keine Detailseite gibt, gehen wir weiter und bauen diese in der nächsten Lektion auf. 39. Details Seite: In dieser Lektion erstellen wir keine Detailseite. So wird hier wieder in unseren Controller kommen. Und wir erstellen eine neue Methode namens Details. Und diesmal brauchen wir auch die Protokolle. Und dann holen wir uns die Fahrräder, Jason. Es gibt zwei Möglichkeiten, das zu tun. Wir können es in einen Dienst stellen, wir könnten es tun, würde das Konstrukt nicht stoppen. Nimm ihn und alles wird es packen. Aber es ist ein Ein-Liner. Wir werden vorerst mit dieser Flug-Duplikation leben. Und ich bin alles bereit für dieses Array. Also nehmen wir einen Ausweis für die Fahrrad-ID. Und wir werden das Fahrrad nach Ausweis finden. Und das wird uns den Schlüssel geben, weil wir das hier machen. Und dann können wir eine Seite rendern. Lassen Sie uns also die Details ausführen, die HTML. Lassen Sie uns wieder vorbeigehen, ausgewählt durch Sorgfalt. Also verwenden wir einen Schlüssel, um ihn aus dem Bike-Array zu finden. Okay, sieht gut aus. Lassen Sie uns also auch diese Detailvorlage erstellen. Also werden wir diese Details zu HTML nennen. Und beginnen wir mit nur Kränen, einfachen Paniermehl. Und dann holen wir das Bike Objekt. Lasst uns das kleine Bike-Emoji wieder reinziehen. Und jetzt, weil wir in diesem Bike-Objekt sind, können wir einfach auf eine Immobilie verweisen. Also hier werden wir den Namen verwenden und den Typ n. und ich werde seine weiße Schrift und seine aerodynamische Bewertung als auch setzen. Legen Sie ein Foto auf den Boden. Okay, es sieht gut aus für mich. Und dann werden wir indexieren und mehr, warum diese Regel. Also sagen wir Controller, Shop, Kontrolle über Details. Und das sieht in Ordnung aus. Aber ich denke, es gibt eine wichtige Änderung, die wir an diesem Routing vornehmen können, um es genauer zu machen. Gehen wir also weiter und schauen wir uns das in der nächsten Lektion an. 40. route filzen: Also haben wir die Detailseite aufgebaut. Und wenn wir zu einem Dev-Server gehen, können wir jetzt sagen, wir können auf ein Fahrrad analog klicken, bringen Details, und dann geben Sie uns weiß und Pfeil und geben Sie alles, was wir in eine Vorlage setzen. Das ist großartig. Aber es gibt ein Problem ist, dass dies eine numerische ID sein soll und ja, ich könnte hier einen Namen eingeben. Und es ist immer noch lädt die Seite ist immer noch denkt, dass die URL ist. Und das liegt daran, dass wir gerade ID gesagt haben, aber wir haben keine Informationen darüber gegeben, welche ID sein sollte. Glücklicherweise ist es wirklich einfach, das zu tun und schlank, also wenn wir einen Doppelpunkt hinzufügen und dann werden wir einen regulären Ausdruck setzen. In diesem Fall wollen wir Ziffern 0 bis neun und es kann mehrere von ihnen geben. Sanat nochmal versuchen. Das funktioniert immer noch, wenn wir eine Nummer eingeben. Alles, was gut aussieht. Aber jetzt wollen wir versuchen, einen Namen zu setzen. Und jetzt bekommen wir eine nicht gefundene Ausnahme. Sieht nicht sehr hübsch aus, aber das ist es, was wir wollen. Diese URL sollte ein Foren für nicht gefunden werden. Das ist also großartig, denn jetzt bedeutet es, dass Sie nur auf diese Seite zugreifen können , wenn es sich um eine echte URL handelt. Wenn Sie die ID verwenden. 41. Fehlerbehandlung hinzufügen: Also haben wir diese Filterung jetzt, wo, wenn wir einige nicht-numerische Zeichen einfügen, erhalten wir diese nicht gefundene Ausnahme. Aber es ist sehr hässlich und nicht super-hilfreich. Jetzt zum Glück kommt Schleim mit einigen gebündelten Middleware zur einfacheren Wartung. Also reden wir über Costume Middleware. Das ist Mitte, während wir im nächsten Modul erstellen. Aber in diesem Modul werden wir nur einige verwenden, die mit dem schlanken Framework kommen. Und das ermöglicht es uns, die Fehlerbehandlung viel schöner zu machen. Also lassen Sie uns voran und fügen Sie das hinzu. Also werden wir Ära Middleware hinzufügen. Und wir werden wahr sagen, wahr, wahr, wenn wir das in einem Moment durchreden. Aktualisieren Sie jetzt die Seite. Wir bekommen diese schön formatiert für, für nicht Pfund Ära, die viel schöner als die alte ist, gibt uns alle Details und der Stapel Spur schön formatiert. Und das kommt mit schlank. Also alles, was wir mit dieser Linie zu tun haben, erlauben diese verschiedenen Optionen. Dieser sagt, ob Sie die Fehlerdetails nicht so anzeigen sollten, wenn wir verkaufen auf falsch, wir sehen, alles, was wir bekommen, ist nicht gefunden und wir bekommen keine der Ära. Es ist keine große Sache auf einem nicht gefunden. Aber wenn Sie bedenken, behandelt dies auch 500 Server-Fehler ist in Produktion. Wir wollen nicht alle diese Details anzeigen. Wir möchten dem Benutzer nur mitteilen, dass ein Fehler aufgetreten ist. Während wir in der Entwicklung das wahr machen können. Und das gibt uns alle Details, damit wir es debuggen können. Also ändern wir dies wahrscheinlich basierend auf der Produktion, diese über zur Kontrolle. Wo sonst, in Bezug auf die Protokollierung, geht der Fehler und Sie können auch hier ein benutzerdefiniertes Logo übergeben. Aber der wichtigste ist, sicherzustellen, dass dies auf falsch und Produktion gesetzt ist. Sie zeigen also Ihren PHP-Code nicht Benutzern an, wenn ein Fehler vorliegt. Aber wir wollen, dass es in der Entwicklung wahr ist, damit wir herausfinden können, was los ist. 42. Benutzerdefinierte Fehlerseiten: Was passiert, wenn wir anstelle von Slims Default Error Handler unsere eigene Seite zur Verfügung stellen wollten, auf der wir das mit der immer Middleware tun können. Es ist ein bisschen zappelig, aber wir werden es jetzt durchmachen. Also werden wir sagen, Epoche Middleware, Fehler-Handler. Und dann atmen Sie Luft ein. Festival wird sagen, was wir umgehen wollen. Also in diesem Fall und einige nicht gefunden Ausnahme. Und dann geben wir ihm eine Funktion, um herauszufinden, was zu tun ist, wenn wir das finden. Ich werde auch unseren Container benutzen wollen. Und dann sagen wir „Control-A“. Okay, also lasst uns darüber reden, was hier vor sich geht. Auf der ERA-Middleware setzen wir also den Fehler-Handler ein und setzen ihn so ein. Also, wenn es eine nicht gefundene Ausnahme gibt, was hier vor sich geht. Dann werden wir diese Funktion ausführen. Die Funktion nimmt ein Anforderungsobjekt und wir bringen auch in unseren Container, so dass, wenn wir diese Funktion ausführen, können wir einen Controller erstellen. In diesem Fall ist es ein Ausnahme-Controller, den wir in einer Minute erstellen werden. Und wir werden die NOT_FOUND Methode gewinnen. Das ist also genau so, als ob dieses Buch für nicht gefundene Fehler verdrahtet wird. Wir werden manuell um Controller erstellen. Und wir werden NOT_FOUND Methode zurückgeben, die in der Anfrage übergeben wird. Lassen Sie uns also fortfahren und den Ausnahme-Controller und eine Vorlage dafür in der nächsten Lektion erstellen . 43. Exception: Jetzt, da wir gesagt haben, dass wir diesen Ausnahme-Controller verwenden möchten, müssen wir das erstellen. Also lasst uns das jetzt machen. Also nennen wir es einen Ausnahme-Controller. Es ist ein App-Controller-Namespace. Und schießt mit über Controllern. Wir brauchen diese Server-Anforderungsschnittstelle. Aber wir werden die Antwort nicht brauchen, weil wir das in einer Minute durchhalten werden, aber normalerweise bekommen wir die Antwort übergeben. Also, wenn wir uns den Chop Controller ansehen, kommt die Antwort hier rein. Aber wenn wir hier im Fehler-Handler sehen, haben wir nicht tatsächlich ein Antwortobjekt übergeben. Wir haben nur die Bitte. Also werden wir unsere eigene Antwort schaffen müssen. So werden wir Klasse definieren. Und wir werden die Controller erweitern, dass wir unsere normalen Hilfsmethoden verwenden können. Und dann hier statt, lassen Sie uns eine Funktion ersten Kurs namens NOT_FOUND erstellen, wenn wir es hier definiert. Also nennen wir es nicht gefunden hier. Und wir brauchen ein Wappen. Und weil wir die Antwort nicht übergeben bekommen, werden wir hier unsere eigene Antwort erstellen. Wir können das tun, weil wir den Namespace hier importieren. Also werden wir nur eine leere Antwort erstellen. Und dann können wir das wie gewohnt an die Renderfunktion übergeben. Ok, hübsches Zeug. Die andere Sache, die wir tun müssen, ist, diese NOT_FOUND Vorlage zu erstellen. Vorlagen crit, nicht niederländisch gefunden. Ich werde nur sagen, Seite nicht gefunden. Und einige im Licht mit Entschuldigung, wir konnten diese Seite nicht finden. Und ich werde einen Link zurück auf die Homepage setzen. Und dann bringen wir auch das Flattern mit. Okay, so SEP IRA Behandlung hier haben wir gesagt, erstellen Sie einen Ausnahme-Controller. Und wenn die NOT_FOUND Methode, haben wir unseren Ausnahme-Controller hier erstellt, definieren Sie die NOT_FOUND Methode. Wir haben unsere eigene Antwort erstellt und angewiesen, die NOT_FOUND Vorlage zu rendern. Und dann haben wir erstellt sind nicht gefunden Vorlage hier. Und da gehen wir. Wenn also ein nicht gefundener Fehler ausgelöst wird, wirft er diese Vorlage, die wir gerade mit unserem lokalen Text erstellt haben. Und ich werde zum Homepage-Link zurückkehren. 44. Fehler manuell auslösen: Wir haben jetzt unsere benutzerdefinierte Fehlerseite „Nicht gefunden“, aber es gibt ein Szenario, von dem ich denke, dass wir vermissen. Also haben wir die URLs gespürt, dass man hier eine Nummer setzen muss, aber es gibt nur acht Fahrräder hier. Also, was passiert, wenn ich hineinlege, sagen 800? Wir werden, das ist eine gültige URL, weil es eine Zahl ist. Aber das Fahrrad sollte nicht existieren. Und ja, ich bekomme das, was das erste Element im Array ist. Und wenn ich eine von einer Nummer in einem wahrscheinlich aufstehen Bian Qi als auch, weil der Schlüssel, sie können den Schlüsselnamen nicht finden. Es kommt falsch zurück. Und wenn wir uns ansehen, was unser Code im Shock-Controller macht, wird dies als falsch zurückkommen. Und dann werde ich versuchen, fällt aus diesem, was wir nur Standard auf den ersten Gegenstand, der die Bian Qi ist. Während die tatsächliche Tatsache, wenn Sie in eine Idee von 200 setzen, sollten Sie eine nicht gefunden bekommen. Um dies zu tun, müssen wir manuell eine HTTP-Ausnahme auslösen, die nicht gefunden wurde. Es wird also Controller shoppen und wir müssen das importieren. Also lassen Sie uns schlanke Ausnahme verwenden, HTTP, nicht gefunden Ausnahme. Und dann hier unten können wir ein wenig überprüfen, um zu sagen, ob p falsch ist, und wir werden dreifach gleich machen, um sicherzustellen, dass es ein boolescher Wert ist und nicht die Zahl 0 sagen, die zu false aufgelöst werden könnte. Wenn ja, werden wir eine Ausnahme auslösen und wir müssen die Anfrage und Antwort in diese übergeben. Okay, jetzt sagen wir, wenn der Schlüssel nicht existiert, werfen Sie diese Ausnahme und dann wird sie von unserer Fehlerbehandlung behandelt. Also, wenn wir die Seite jetzt aktualisieren, schön. Also setzen wir in eine Idee von 200 und es ist, dass bezahlt nicht gefunden. Wir können immer noch in jedes der vorhandenen Fahrräder gehen und die Details bekommen. Aber wenn wir dies in eine ID ändern, die nicht existiert, kommt der Schlüssel als falsch zurück. Wir für unsere Ausnahme und es wird von der Fehlerbehandlung gefangen und zeigt unsere schöne Fehlerseite. 45. Middleware: Middleware ermöglicht es uns, die Anfrage, die Umgebung und die Antwort zu ändern und eine Menge zusätzliche Verarbeitung zu machen. Wenn Sie also Dinge wie Sitzungsmanagement, Datenverarbeitung, Fehlerbehandlung behandeln möchten Datenverarbeitung, , können wir das alles mit Middleware tun. Also in diesem Modul, werden wir eine Mitgliederbereich-Anwendung schreiben, wo Sie sich einloggen und mögen, uns selbst, genannt Nummer Zone. Und wir werden das tun, indem wir irgendeinen Drittanbieter mitbringen, wo man Geld in die Sitzung bringt und unsere eigene Middleware schreiben, um die Authentifizierung zu handhaben. 46. Middleware: Schauen wir uns die Theorie hinter Middleware bisher in unserer Art der grundlegenden Verwendung der Anwendung an, wir haben diese Idee. Diese Anfrage kommt aus dem Browser, sagen wir, eine get Anfrage zum Schrägstrich, hallo und das wird einem Root auf der Route zugeordnet, schaut auf die Anfrage und sagt, OK, wir werden diese Antwort senden zurück. Das heißt, Hier ist ein übereilter Moment sagt Hallo Welt auf dem Code. Innerhalb dieser Route führt das Framework die Übereinstimmung für die Route durch, und dann gibt der Root die Antwort zurück, die wir brauchen, und es ist ein einfaches In-Out-System. Aber was passiert, wenn wir etwas komplexeres brauchen, wo wir mit dieser Anfrage interagieren möchten und vielleicht die Antwort basierend auf verschiedenen Variablen oder einfach ADM oder Informationen dazu ändern möchten, es leicht ändern , einige der Informationen darin, bevor wir es an die Wurzel übergeben? Dies könnte etwas sein, das wir in jeder Anfrage tun oder bestimmte Anfragen tun möchten. Nun, die Antwort ist hier, dass wir Middleware verwenden, also kommt die Anfrage und es geht dann durch eine Reihe von Middleware weniger, und wir können so viele mittlere trägt haben, wie wir in diesem kleinen Diagramm wollen, das ich gezeigt habe Stück Middleware. Die Anfrage kommt rein. Es wird durch die Mitte übergeben, wo jede führte zu der Anwendung dann etwas tun kann und es wieder zurück übergeben . Es gilt für diesen Prozess und erreicht schließlich die Antwort. Es ist also eine Chance für uns, in den Lebenszyklus dieser Anfrage und Antwort einzugreifen, ohne dass der Code in der Route selbst liegen muss. 47. Mitgliedszone: Ein bisschen Vorbereitung für dieses Modul. Also sind wir jetzt in Projekte sechs. Und wenn wir in die Öffentlichkeit gehen, einige aktualisierte Stile, können wir kopieren und einfügen in hier. Und Sie können auch über den Kopf zu Vorlage kopieren. Oder du kannst einfach hier reingehen und die Zahlen aktualisieren. Ich werde es Mitglieder nennen. Ich bin das ist alles, was wir brauchen, um mit diesem Projekt zu beginnen. 48. Sichere und Anmeldeseiten: Lassen Sie uns voran und starten Kräne einige grundlegende Seiten für Mitgliederzone. Also werden wir einen Controller erstellen, der als „off controller“ bezeichnet wird. In Anbetracht des Standard-Namespace. Bringen Sie die Anfrage und Antwort ein. Und ich weiß, nennen Sie es aus Controller erweitert Controller wie üblich. Und wir werden eine Methode namens login erstellen. Rufen Sie die Anmeldegebühr für die Vorlage für den Moment an. Und dann lassen Sie uns kopieren und einfügen und einen namens Secure Controller erstellen. Das wird also unser tatsächlicher Mitgliederbereich sein. Und wir werden diese Methode Standard aufrufen, und wird auch eine Vorlage namens default rendern. Lassen Sie uns voran gehen und kümmern uns um diese Vorlagen. Also nennen wir diesen einen Login-Punkt HTML bringen das Flattern am Ende. Okay, das sieht gut aus für die Anmeldevorlage. Dann lassen Sie uns keine Standardvorlage erstellen, die das Array sein wird, das Sie erhalten, wenn Sie angemeldet sind. Gerinnsel Standard-Punkt-HTML. Ich möchte etwas wie willkommen sagen, willkommen im Mitgliederbereich. Okay, und dann lasst uns diese Wurzeln verdrahten. Schrägstrich r2 und mehr. Warum das bis zum Login. Es wird also das beliebige Verb verwenden weil du irgendwann in der Lage sein wirst, dazu zu posten. Was Sie darauf posten können. Jetzt wird das Formular nichts tun, aber du könntest es tun. Und rufen wir Schrägstrich sicher auf. Und es wird zum sicheren Controller gehen und wir nannten es Standard. Ok. Lassen Sie uns die Entwicklungen immer dauerhaft machen. Und mal sehen, was hier passiert. Ok. - Ja. Also habe ich mein Login-Formular und wenn ich gehe zu sichern, habe ich meine Willkommensseite. Also haben wir die Seiten raus. Offensichtlich gibt es jetzt Schutz und ihr Login-System im Moment, aber wir haben ein gutes Gerüst, um loszulegen. 49. Session: Um diese Sitzung zu verwalten, benötigen wir eine Art von Session-Handling-Bibliothek. In diesem Fall werde ich diese Slim Session benutzen. So können wir voran gehen und installieren, die Council Dev-Server ermöglicht und wir werden tun, dass ein Composer es richtig buchstabieren muss . Wir werden es sehr schnell herausfinden. Also lassen wir Composer einfach seine Sache hier tun, um die Middleware zu installieren, was nur ein paar Sekunden dauern sollte. Und dann gehen wir zurück zu unserer Indexseite und installieren sie. Ok, nett. Also, ja, das haben wir. Und wenn wir schauen, komponieren Sie eine Datei dort ist es. Perfekt. Cool. Also werden wir das als Service installieren. Und wir müssen es als Middleware hinzufügen. Nun, also gehen wir weiter und machen das. Also in unserer Indexdatei, sagen wir, enthalten Sie eine Session. Und wir geben ihm hier wie gewohnt eine Funktion. Und alles, was wir hier tun werden, ist, neue schlanke Sitzung zurückzugeben, wie PKA. Und dann müssen wir auch die Middleware hinzufügen. Also machen wir das hier. Okay, lass uns reden, was hier vor sich geht. Also hier installieren wir die Middleware, was wir brauchen, damit es funktioniert. Aber wir wollen auch den Abschnitt in unserem Dependency Injection Container zur Verfügung stellen, daher werden wir auch, sobald wir das getan haben , werden wir es auch hier als Service installieren. So können wir es dann in unserem Controller verwenden. Also, wenn wir nur den Controller abschalten und oben auf hey, lassen Sie uns einfach etwas ausklingen. Also werden wir Abhängigkeitsinjektions-Container hinzufügen. Wir können den Sitzungsdienst nicht ausführen. Und wir werden die Zählung bekommen. Und hier werden wir auch ein Konto implementieren. Also wieder, wir haben den Sitzungsdienst. Also sollte das Kreuz tatsächlich entlassen werden, weil wir die Anzahl auf die Anzahl plus eins setzen wollen. Nun, wenn wir hier auf unserer Login-Seite gehen und wir aktualisieren, sehen wir die Sitzungsdienste funktionieren, weil jedes Mal, wenn es diese Nummer erhöht. 50. Anmelden: Jetzt, da wir einen Beitrittsdienst haben, gehen wir weiter und nutzen ihn. Also werden wir diesen Code auskommentieren, den wir hier erstellt haben. Und dann werden wir den Benutzer behandeln, der das Formular absendet. Wir werden also sagen, Anfrage ist Post-Hilfsmethoden, die auf schlanke HTTP-Überprüfungen kommt, wenn die Anfrage gepostet wird. Und wenn ja, werden wir weitermachen und den Sitzungsservice bekommen. Und wir setzen den Benutzer TB, die E-Mail-Adresse. In der realen Welt würden wir dies offensichtlich mit einem gültigen Benutzer überprüfen. Aber für hier, lassen Sie uns einfach glauben, dass ihre E-Mail-Adresse legitim ist. Und wir werden hier eine Nova-Helfer-Methode verwenden , weil wir sie in den Mitgliederbereich schicken wollen. Also werden wir die Antwort umleiten und wir werden sie umleiten, um zu sichern, wir werden das zurückgeben. Also, jetzt, wenn wir einen Beitrag etwas verwenden, wird es diese E-Mail-Adresse in die Sitzung und diese Verwendung der Variablen speichern und es wird sie lesen. Sogar das, was wir tun wollen, ist eine Abmeldemethode hinzuzufügen. Und hier wieder bekommen wir den Sitzungsdienst. Und statt einer Gauß-Atlas-Zeit werden wir löschen, weil wir diese Variable löschen wollen. Und wird die Antwort erneut mit der Lese-Methode nur auf den Schrägstrich zurückgeben , der sie zur Anmeldeseite zurückführt. Und dann lassen Sie uns in index.js gehen, HP und warum das auch? Abmeldung mit Schrägstrich. Und sobald Sie aus dem Controller auf die Methode ist Abmeldung super genannt. Also wollen wir ihnen wahrscheinlich auch sagen, dass sie nicht eingeloggt sind und ihnen viel Logout Link geben. Gehen wir also weiter und machen Sie das in der nächsten Lektion. 51. Den Benutzernamen spielen: Benutzer können sich jetzt anmelden, aber wir müssen ihm idealerweise mitteilen, dass sie sich angemeldet haben. Also, wenn wir einen sicheren Controller hier öffnen und wir werden einige Daten hier zu übergeben. Also, wenn Sie den Benutzernamen erhalten, so erhalten wir einen Sitzungsdienst wird eine Verwendung von Variablen daraus erhalten. Und dann, wenn wir öffnen Standard, können wir sagen, etwas wie Sie als Benutzer angemeldet sind. Und ich werde ihnen auch einen Logout-Link geben. Ok. - Schön. Also lasst uns weitermachen und ich werde mich einloggen. Und dass wir sehen können, haben wir Chris auf example.com gespielt. Ok, reizend. Und wir haben auch einen Log-Out-Link, also kann ich darauf klicken. Und das schickt mich zurück zum Anmeldebildschirm. Das sieht also gut aus, das einzige Problem ist, dass ich einfach manuell Schrägstrich sicher eingeben könnte. Und ich bin nicht, bis sie sich angemeldet haben, wir können die E-Mail-Adressen hier leer sehen, aber es hat mich nicht davon abgehalten, auf diese Seite zu gelangen. Also die nächste Sache ist, dass wir diese Seite tatsächlich privat Bank. 52. Benutzerdefinierte Middleware: Wir haben dieses halb funktionale Login-System, wo er sich einloggen kann, aber Sie können auch einfach die URL direkt eingeben. Es gibt ein paar Sachen, die wir damit machen könnten. Zum Beispiel könnten wir manuell hier reingehen und wir könnten sagen, wir bekommen die Sitzung. Und wir könnten den Benutzer bekommen. Und wir könnten sagen, wenn nein, dann geben Sie eine Antwort zurück. Wir haben auf die Login-Seite umgeleitet, so etwas. Und das könnten wir in jeder Methode tun. Aber das wäre ein bisschen schmerzhaft, denn wir müssten daran denken, es bei jeder Methode zu tun. Und wenn wir vergessen haben, würden wir potenziell Ehepartner eine private Seite außerhalb der Welt. Ein besserer Weg, dies zu tun, ist mit einigen benutzerdefinierten Middleware. Und wir werden jetzt durch die Einrichtung gehen. Es wird also in unserer App sein. Und wir werden es authentifizieren Dot PHP nennen. Und ich werde hier einen neuen Ordner erstellen, der Middleware heißt. Und dann müssen wir ein paar Dinge einbringen. Und wir werden eine Klasse namens authentifizieren private Variable namens Sitzung erstellen. Und wir werden den Sitzungsdienst N als Parameter nehmen und ihn einfach in dieser Instanzvariablen speichern. Und das ist ein bisschen, während wir eine Weile begrenzen werden. Also werden wir eine magische Funktion benutzen. Lassen Sie uns Schlag aufrufen aufgerufen werden, um zu laufen, wenn die Klasse aufgerufen wird. Und ich nehme eine Anfrage und den Request-Handler an. Und dann sagen wir, OK, wir haben unseren Sitzungsservice. Und wir werden sagen, verwenden Sie Variable existiert. Und wenn es mit der Anfrage fortfährt. So können wir dem Request-Handler mitteilen, diese Anfrage weiter zu bearbeiten, da wir wissen , dass die Benutzervariable existiert und daher der Benutzer angemeldet ist, wenn sie nicht existiert. Und wir gehen in die angeforderte wenig, indem sagen, behandeln Sie die Anfrage mit einer Weiterleitung auf die Anmeldeseite. Wenn die Anfrage eingeht, wird diese Middleware ausgeführt. Und es wird sagen, ist die Verwendung eine Variable, dass, wenn es fortgesetzt wird, die Anfrage normal ist. Wenn dies nicht der Fall ist, ändern Sie die Anforderung in eine Umleitung zum Anmeldebildschirm. Also lasst uns voran gehen und diese Klasse in der nächsten Lektion verdrahten. 53. Middleware: Lasst uns weitermachen und unsere maßgeschneiderte Middleware verkabeln. Also müssen wir uns hier sichern. Ich werde das hier einfach runterziehen. Und hier haben wir einige benutzerdefinierte Middleware zu der gesamten App hinzugefügt. Aber hier wollen wir nur, dass diese Middleware läuft, wenn sie in der sicheren URL sind. Also werde ich weitermachen, wo wir die Definition für die Route nennen. Ich werde hinzufügen, haha, ich werde die Add-Methode aufrufen. Und wir rufen die Authentifizierungsklasse an. Ok, großartig. Und dann müssen wir natürlich die Sitzung dahin übergehen. Also werden wir sagen, apt-get container get session. So wie wir es hier installiert haben, haben wir auch ein Haar installiert. Und jetzt, wenn wir die Seite aktualisieren, wir zurück zum Anmeldebildschirm geschickt. Jedes Mal, wenn wir versuchen, die URL einzugeben, tritt Middleware ein, es geht hier hinein, es sagt, dass der Benutzer nicht existiert, also fortzusetzen Sie nicht. Die Anfrage ist normal, senden Sie sie an den Anmeldebildschirm. Dann können wir hier voran gehen und wir können die E-Mail-Adresse eingeben und einloggen. Und wir sehen, dass wir es dort haben. Also wieder, jetzt funktioniert es, weil der Benutzer existiert und daher die Anfrage nicht unterbrechen muss. Das Abrufen dieser Middleware wird nur mit dem Moment auf dieser Route ausgeführt , denn das ist der Zeitpunkt, an dem wir sie hinzugefügt haben. Wenn wir uns ausloggen und versuchen, es erneut einzugeben, finden wir uns ein Paket. Die Login-Bildschirme sind großartig. Wir verfügen nun über ein vollständig geschütztes Login-System. 54. Route: Was passiert, wenn wir mehr als eine Seite wollten? Also in dem Moment, in dem wir gerade diese eine, Route, eine sichere Seite hier hinzugefügt haben, aber wir möchten vielleicht mehr hinzufügen. Nehmen wir an, wir wollen die Statusseite. Also lasst uns in sicheren Controller gehen und einfach lat erstellen. Also nennen wir es Status. Und wir nehmen unsere übliche Anfrage und Antwort. Und wir werden einfach die wirklich grundlegende Seite hier ausführen. Und dann gehen wir voran und erstellen eine Statusseite sowie Vorlage. Und ich werde nur hartcodiert sagen, dass Ihre Mitgliedschaft auf dem neuesten Stand ist. Und wir müssen das verdrahten. Und wir könnten die benutzerdefinierte Middleware wieder in diesem separaten Raum installieren. Aber das wäre super chaotisch. Ein viel sauberer Weg ist, dass wir eine Root-Gruppe verwenden können. Lassen Sie uns das einfach aussagen. Und stattdessen hier, und wir sagen App. Wir erstellen einen Gruppenschrägstrich die QA. Weil alle unsere URLs mit Schrägstrich Sicherheit beginnen werden. Sie könnten dies tatsächlich leer machen, wenn Sie eine Gruppe mit völlig anderen URLs haben möchten . Aber in diesem Fall werden sie alle hier sein. Und es ist IB AP da drin. Und dann werden wir hier unsere Routen definieren. Also, wenn Sie Schrägstrich sicher sind, dann wollen wir auf die Standardseite gehen. Wie zuvor. Ich werde eine neue Seite erstellen. Und dann wieder wie zuvor wollen wir die Middleware installieren. Also können wir diese Form hier annehmen. Also, was ist hier los? Nun, wir definieren auch zwei Wurzeln. Es ist wie Haha. Aber wir haben sie in diesen Schrägstrich gesicherten Bereich gelegt. Das bedeutet, wenn Sie Schrägstrich sicher sind und nichts anderes, wird es hier gehen. Und wenn Sie sicheren Schrägstrich Status, dann wird es uns auf die Statusseite bringen. Und für beide installieren wir unsere benutzerdefinierte Middleware-Gruppe. Also lassen Sie uns erfrischendes Haar versuchen und ich habe gesehen, wie es funktioniert. Lassen Sie uns einen Status bekommen. - Ja. Und dann lassen Sie uns Widgets. Ich öffne ein Fenster, wir sind nicht eingesperrt. Wir wurden auf die Login-Seite geschickt. Ok, brillant. Das könnte also, wenn Sie es vollständig URLs benötigen, wir könnten das leer lassen und wir könnten so etwas tun. Und das würde gut funktionieren. Aber da alle URLs gruppiert sind, könnten wir hier genauso gut den Schrägstrich tricker setzen und dann alle unsere Wurzeln hier erweitern. Also haben wir das Leere, wir haben den Schrägstrich Status. Und dann können wir benutzerdefinierte Authentifizierungs-Middleware auf all diesen Wurzeln auf einmal installieren, alles in der Gruppe, so dass alle diese Bereiche durch das Login-System geschützt sind. 55. Letzte Gedanken: Herzlichen Glückwunsch, dass es bis zum Ende dieser Klasse auf Slim. Sie haben jetzt eine Einführung in Micro-Frameworks. Sie verstehen, wie schlank funktioniert in Bezug auf Rooting Controller jemals Berichterstattung über Middleware und mehr auf Hoffentlich haben Sie Ihre ersten 6-Projekte erstellt. Teilen Sie Ihre Projekte auch mit der Gruppe, indem Sie den Quellcode freigeben. Oder wie auch immer Sie sie im Projektbereich entfernt haben wollten. Wenn Sie diesen Pflaster genossen haben und bitte hinterlassen Sie eine Rezension über das, was Sie als nächstes bewegen , wir schießen das Beste aus Glück.