2016-05-05 13 views
3

Ich bin ein Anfänger in Laravel 5.2 beginnen und ich denke, diese Konzepte sollten weiter erklärt werden, als nur Dokumentation zu lesen.Brauchen Sie Verständnis für Laravel Core Feature

  • Dienstleister
  • Service Container
  • Verträge
  • Fassaden

denke ich, eine gute Erklärung und Beispiele, die wirklich Anfängern helfen kann verstehen, wie diese vier Konzepte gemeinsam im Rahmen passen.

+0

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

+0

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 –

Antwort

4

Dienstanbieter: Die so genannten Dienstanbieter sind der Herzschlag Ihrer Laravel-Anwendung. Sie sind das zentrale Element des Initialisierungsprozesses, bei dem der gesamte relevante und benötigte Code von PHP geladen wird. Dies umfasst alle wesentlichen Elemente aus dem Framework selbst, aber auch eigenen und benutzerdefinierten Code, den Sie laden müssen.

Inversion of Control oder IoC: Kann nicht easly erklärt werden (ich habe nur einige Ideen über dieses im nicht ein Pro)

Fassaden:

Das Muster Fassade ist ein Softwaredesignmuster, das häufig in der objektorientierten Programmierung verwendet wird. Eine Fassade ist in der Tat eine Klasse, die eine komplexe Bibliothek umschließt, um eine einfachere und lesbarere Schnittstelle zu ihr bereitzustellen. Das Fassadenmuster kann auch verwendet werden, um einer Gruppe komplexer und schlecht gestalteter APIs eine einheitliche und gut gestaltete API bereitzustellen.

enter image description here Eine Laravel-Fassade ist eine Klasse, die den Services innerhalb des Containers eine statisch ähnliche Schnittstelle zur Verfügung stellt. Diese Fassaden dienen gemäß der Dokumentation als Proxy für den Zugriff auf die zugrunde liegende Implementierung der Containerdienste.

MORE

Verträge: LARACASTS FREE VIDEO

Ich weiß, das ist nicht genug! was du fragst ist kompliziertes Zeug eine einzige Antwort kann nicht genug sein

+0

Ja. Das ist nicht genug, aber Sie haben ein gutes Startup für ihn gegeben. –

+0

ja ich denke, diese Dinge zu verstehen ist von wesentlicher Bedeutung! Menschen müssen verstehen, was sie verwenden –

3

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!

Verwandte Themen