Ok, also stimme ich den anderen zu, dass Laracasts eine erstaunliche Ressource ist, die wirklich ins Detail gehen und die Dinge sehr einfach abbauen wird.
aber sagen, dass die kurze Übersicht ist wie folgt:
Service Container (IoC-Container) ist ein Laravel Kernprozess, die Sie Objekte mit ihren Abhängigkeiten ordnungsgemäß zu laden. Wenn ich eine Controller-Methode wie dies zum Beispiel haben:
public function update(Request $request, $id)
{
...
}
IoC-Container ist intelligent genug, um die Anfrage zu lösen und alle Abhängigkeiten mit der Anforderungsklasse zugeordnet laden um sicherzustellen, dass es richtig instanziiert wird.
Es erlaubt Ihnen auch Klassen zu instanziiert ohne vollständig entlang aller Abhängigkeiten passieren zu haben, wie folgt:
class ProductRepo(Product $product)
{
public function get($id)
{
...
}
}
ich diese Klasse verweisen kann es mit Dependency Injection ohne Belastung wie folgt: (stellen Sie sicher, in einen Pass zu spielen vollständige Namespace)
app('App\ProductRepo')->get($id);
Dies ermöglicht es mir nicht in einem Produktobjekt weitergeben haben, ist Laravel intelligent genug, um das Product-Objekt zu lösen, weil die IoC-Container, die Magie hinter den Kulissen tun.
Die Serviceprovider bieten Ihnen die Möglichkeit, benutzerdefiniertes Verhalten beim Starten oder Instanziieren einer Klasse zu verwenden. Zum Beispiel verwendet Laravel standardmäßig eine Klasse namens EventServiceProvider. Die Aufgabe dieser Klasse besteht darin, das Ereignissystem in Laravel zu konfigurieren, um sicherzustellen, dass alle benutzerdefinierten Ereignislistener, die Sie erstellen, einbezogen werden. Wenn ich also sicherstellen wollte, dass beim Laden des EventDispatcher alle notwendigen Abhängigkeiten eintreffen.
Die Verträge sind wirklich einfach. Sie sind nur eine Anspielung auf php objektorientiertes Konzept von Interfaces. Dieses Konzept besagt, dass es Klassen gibt, die Regeln aufstellen. Zum Beispiel:
interface SearchableInterface
{
public function search($data);
}
class BinarySearch implements SearchableInterface
{
public function search($data)
{
...
}
}
Dies besagt, dass jede Klasse, die die SearchableInterface implementiert, muss eine Funktion suchen, die einen Parameter akzeptiert. Dadurch wird ein 'Vertrag' erstellt, bei dem alle Klassen, die das SearchableInterface implementieren, über diese Funktion verfügen müssen oder die Anwendung einen Fehler auslöst.
Dies ist ideal für die Verwendung austauschbarer Stücke (Geschwister) und keine Sorge, dass die Klasse eine Funktion fehlt, die Sie benötigen.
Last but not least ist die Fassade. Ich liebe Fassaden. Kurz gesagt, all dies macht eine statische Repräsentation einer Klasse, die nicht statisch definiert wurde. Also sagen wir, ich habe eine Klasse, die ein Dokument von S3 bekommt.
class S3
{
public function get($file)
{
...
}
}
Ohne eine Fassade würden Sie zuerst instanziiert und dann auf die Klasse erhalten, um rufen etwas von S3 zu erhalten.
Laravel ermöglicht es Ihnen, Fassaden einfach zu registrieren, so dass Sie dies statisch für Lesbarkeit und Bequemlichkeit verwenden können.
S3::get('MyAwesomeFile');
All dies eine Vereinfachung jedes Konzept war, geht aber in einigen Details über einige der Grundlagen jedes Konzept. Hoffe das hilft!
Beobachten Sie diese Serie bei Laracasts und erwägen Sie, Jeffrey Mittagessen zu kaufen! Jeffrey Way ist deine beste Ressource zum Lernen Laravel .. (Diese Serie ist kostenlos) https://laracasts.com/series/laravel-5-from-scratch – enriqg9
Dies ist keine Antwort mate, aber seit du ein Anfänger bist du besser nimm es Schritt für Schritt, wie auch immer ich diese Frage mag! weil ich weiß, wie man dieses Zeug benutzt, aber ich weiß nicht, was sie sind und wie sie arbeiten, jeffrey macht eine gute Arbeit, überprüfen Sie die Laracasts –