Contracts
, ServiceContainer
, ServiceProvider
, Facades
1.Contracts
Vertrag, Vertrag, also Schnittstelle, definiert einige Regeln, und jeder, der diese Schnittstelle implementiert, muss sie implementieren it Methoden im Inneren;
2.ServiceContainer
, implementiert Contracts
, der Dienstanbieter von ServiceProvider
, gibt serviceContainer
Instanziierung zurück Zur Verwendung an anderer Stelle können Sie es zu ServiceContainer
von app/config
hinzufügen und es wird automatisch im Container provider
registriert, die Aufrufmethode von Facades
vereinfachen Methoden in ServiceProvider
können statisch aufgerufen werden; ServiceContainer
implementiert die Schnittstelle
, die geschrieben oder nicht geschrieben werden kann, aber nicht Hier definiert;
Definieren Sie ein Contracts
, um bestimmte Funktionen zu implementieren
namespace App\Helper; class MyFoo { public function add($a, $b) { return $a+$b; } }
ServiceContainer
zum Array
hinzu 🎜> um das System automatisch registrieren zu lassenServiceProvider
ServiceContain
,
kann zu diesem Zeitpunkt verwendet werden. Angenommen, Sie verwenden
<?php namespace App\Providers; use App\Helper\MyFoo; //要服务的Container use Illuminate\Support\ServiceProvider; use App; class MyFooServiceProvider extends ServiceProvider { public function boot(){} //注册到容器中 public function register() { //可以这么绑定,这需要use App; App::bind("myfoo",function(){ return new MyFoo(); }); //也可以这么绑定 $this->app->bind("myfoo", function(){ return new MyFoo(); }); } }
app/config.php
providers
im Controller ist zu mühsam. Sie müssen auch ServiceProvider
verwenden, um das Objekt zu erhalten. Der Einfachheit halber können Sie die Fassade
public function two($id=null) { //从系统容器中获取实例化对象 $myfoo = App::make("myfoo"); echo $myfoo->add(1,2); }
AppProvidersMyFooServiceProvider::class
verwenden 🎜> und rufen Sie es direkt im Controller auf namespace App\Facades; use Illuminate\Support\Facades\Facade; class MyFooFacade extends Facade { protected static function getFacadeAccessor() { //这里返回的是ServiceProvider中注册时,定义的字符串 return 'myfoo'; } }
make
Empfohlen: „MyFooFacade
Laravel-Tutorial
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Beziehung zwischen Verträgen, ServiceContainer, ServiceProvider und Fassaden in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!