Lumen - 服務容器,服務提供者,Facades的關係
- Contracts 合同,契約,也就是介面,定義一些規則,每個實現此介面的都要實現裡面的方法
ServiceContainer 實現Contracts,具體的邏輯實現
ServiceProvider ServiceContainer的服務提供者,返回ServiceContainer的例項化,供其他地方使用,可以把它加入到app/config的provider中,會被自動註冊到容器中
Facades 簡化ServiceProvider的呼叫方式,而且可以靜態呼叫ServiceContainer中的方法
ServiceContainer :實現Contracts,具體的邏輯實現
ServiceProvider :ServiceContainer的服務提供者,返回ServiceContainer的例項化,供其他地方使用,可以把它加入到app/config的provider中,會被自動註冊到容器中
Facades: 簡化ServiceProvider的呼叫方式,而且可以靜態呼叫ServiceContainer中的方法
-
操作示例
首先先在:app\Providers\Dava目錄下建立DavaServiceProvider.php檔案<?php /** * Created by PhpStorm. * User: dava * Date: 2018/5/11 * Time: 17:54 */ namespace App\Providers\Dava; use App\Http\Controllers\test; use Illuminate\Support\ServiceProvider; class DavaServiceProvider extends ServiceProvider { /** * Bootstrap the application services.(引導應用程式服務。) * * @return void */ public function boot() { // } /** * Register the application services.(註冊應用程式服務。) * * @return void */ public function register() { // $this->app->bind('dava',function(){ return new test(); //要操作的物件 }); } }
第二,在dava-project\bootstrap目錄下的app.php 給應用註冊服務,這裡註冊的服務都是服務提供者 提供 位置都在 \App\Providers下
$app->register(\App\Providers\Dava\DavaServiceProvider::class);
第三,呼叫剛剛註冊的服務,你可以選擇在任意可以掉用方法的地方掉用
<?php
/**
* Created by PhpStorm.
* User: dava
* Date: 2018/5/8
* Time: 15:17
*/
namespace App\Http\Controllers\Admin\Messages;
use App\Define\Common;
use App\Http\Controllers\Controller;
use App\Logic\Admin\Messages\AdminMessagesLogic;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Dava;
class GetList extends Controller
{
public function run() {
//沒有引入Facades的呼叫方式,但是這樣不太友好,還有優化
$myfoo = App::make("dava");
echo $myfoo->Test();
//引入Facades的呼叫方式
echo Dava::Test();die;
}
}
第四,引用Facades模式,找到\vendor\illuminate\support\Facades目錄,
並且再裡面建立Dava.php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class Dava Facade
{
protected static function getFacadeAccessor()
{
//這裡返回的是ServiceProvider中註冊時,定義的字串
return 'dava';
}
}
完工
相關文章
- Laravel底層學習筆記02 - 服務容器,服務提供者Laravel筆記
- Fabric 1.0原始碼分析(24)MSP(成員關係服務提供者)原始碼
- Laravel 服務提供者指南Laravel
- 【微服務之DiscoveryClient 服務註冊(提供者)】微服務client
- Laravel服務容器Laravel
- 《springcloud 一》搭建註冊中心,服務提供者,服務消費者SpringGCCloud
- Spring Cloud(四)服務提供者 Eureka + 服務消費者 FeignSpringCloud
- 事件與服務容器事件
- 深入Laravel服務容器Laravel
- Laravel 服務提供者業務使用例項Laravel
- Laravel 服務提供者和門面模式Laravel模式
- Spring Cloud(三) 服務提供者 Eureka + 服務消費者(rest + Ribbon)SpringCloudREST
- 「Laravel 服務容器」自己的理解Laravel
- 深入剖析 Laravel 服務容器Laravel
- Docker容器服務搭建(一)Docker
- Symfony 服務容器:使用 XML 或 YAML 檔案描述服務XMLYAML
- 圖解Dubbo,Dubbo服務提供者詳解圖解
- 深入剖析 Laravel 服務提供者實現原理Laravel
- 使用 Laravel 服務容器的優勢Laravel
- Laravel 服務容器、服務提供器、契約例項講解Laravel
- 如何建立 Laravel 延遲載入的服務提供者Laravel
- 簡單優化容器服務優化
- Laravel原始碼解析 — 服務容器Laravel原始碼
- Laravel 服務容器和提供器Laravel
- Laravel 服務容器實現原理Laravel
- springcloud微服務實戰 學習筆記二 服務提供者SpringGCCloud微服務筆記
- Laravel核心——服務容器的細節特性Laravel
- Laravel 核心——服務容器的細節特性Laravel
- 通俗地理解面向服務的架構(SOA)以及微服務之間的關係架構微服務
- Nacos服務相關
- 服務交付的專案:建立PM牢固的客戶關係
- 原始碼|什麼是服務提供者框架?舉例?原始碼框架
- hyperf從零開始構建微服務(一)——構建服務提供者微服務
- Postgres On Docker-窺探容器服務Docker
- Laravel 重點概念理解-服務容器Laravel
- Registry 容器映象服務端細節服務端
- 微信小程式遇見容器服務微信小程式
- 如何監控docker容器內的服務程式Docker