Heim > php教程 > PHP开发 > Ausführliche Erklärung zum Erstellen eines Dienstanbieters und einer Fassade in Laravel5

Ausführliche Erklärung zum Erstellen eines Dienstanbieters und einer Fassade in Laravel5

高洛峰
Freigeben: 2016-12-23 17:24:17
Original
1570 Leute haben es durchsucht

Das Beispiel in diesem Artikel beschreibt, wie man einen Dienstanbieter und eine Fassade in Laravel5 erstellt. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Laravel5 erstellt eine Fassade, die einen Dienst als Fassade registrieren kann, sodass Sie sich nicht die Mühe machen müssen, ihn zu verwenden. Der Artikel veranschaulicht anhand eines Beispiels, wie Dienstanbieter und Fassade erstellt werden.

Ziel

Ich hoffe, ich erstelle eine AjaxResponse-Fassade, damit sie wie folgt direkt im Controller verwendet werden kann:

class MechanicController extends Controller {
  public function getIndex()
  {
    \AjaxResponse::success();
  }
}
Nach dem Login kopieren

Seine Funktion besteht darin, das zurückgegebene Format zu standardisieren als

{
  code: "0"
  result: {
  }
}
Nach dem Login kopieren

Schritte

Serviceklasse erstellen

in der App Erstellen Sie eine Klasse

<?php namespace App\Services;
class AjaxResponse {
  protected function ajaxResponse($code, $message, $data = null)
  {
    $out = [
      &#39;code&#39; => $code,
      &#39;message&#39; => $message,
    ];
    if ($data !== null) {
      $out[&#39;result&#39;] = $data;
    }
    return response()->json($out);
  }
  public function success($data = null)
  {
    $code = ResultCode::Success;
    return $this->ajaxResponse(0, &#39;&#39;, $data);
  }
  public function fail($message, $extra = [])
  {
    return $this->ajaxResponse(1, $message, $extra);
  }
}
Nach dem Login kopieren

im Ordner /Services

Diese AjaxResponse ist eine spezifische Implementierungsklasse. Als nächstes erstellen wir einen Anbieter für diese Klasse

Anbieter erstellen

Eine Klasse im Ordner „App/Anbieter“ erstellen

<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AjaxResponseServiceProvider extends ServiceProvider {
  public function register()
  {
    $this->app->singleton(&#39;AjaxResponseService&#39;, function () {
      return new \App\Services\AjaxResponse();
    });
  }
}
Nach dem Login kopieren

Hier definieren wir den Dienstnamen bei der Registrierung Definieren wir für AjaxResponseService

eine weitere Fassade

Fassade erstellen

Klasse erstellen

<?php namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class AjaxResponseFacade extends Facade {
  protected static function getFacadeAccessor() { return &#39;AjaxResponseService&#39;; }
}
Nach dem Login kopieren

im App/Facades-Ordner

Ändern Sie die Konfigurationsdatei

Okay, jetzt müssen wir nur noch diese beiden Dinge in app.php mounten

<?php
return [
  ...
  &#39;providers&#39; => [
    ...
    &#39;App\Providers\RouteServiceProvider&#39;,
    &#39;App\Providers\AjaxResponseServiceProvider&#39;,
  ],
  &#39;aliases&#39; => [
    ...
    &#39;Validator&#39; => &#39;Illuminate\Support\Facades\Validator&#39;,
    &#39;View&#39;   => &#39;Illuminate\Support\Facades\View&#39;,
    &#39;AjaxResponse&#39; => &#39;App\Facades\AjaxResponseFacade&#39;,
  ],
];
Nach dem Login kopieren

Zusammenfassung

Die Verwendung der Fassade in Laravel5 ist relativ einfach und unterscheidet sich im Grunde nicht von 4.

Ich hoffe, dass dieser Artikel für jedermann beim PHP-Programmdesign basierend auf dem Laravel-Framework hilfreich sein wird.

Ausführlichere Erklärungen zum Erstellen von Dienstanbietern und Fassaden in Laravel5 finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage