Laravel如何創(chuàng)建服務(wù)器提供者實(shí)例代碼
前言
Laravel服務(wù)器容器:是用于管理類依賴和執(zhí)行依賴注入的工具。下面我們演示下如何創(chuàng)建服務(wù)器提供者,它是Laravel的核心。話不多說了,來一起看看詳細(xì)的介紹吧
在app/Contracts目錄下創(chuàng)建TestContract.php文件,其內(nèi)容為:
<?php namespace App\Contracts; interface TestContract { public function callMe($controller); }
在app/Services目錄下創(chuàng)建TestService.php文件,其內(nèi)容為:
<?php namespace App\Services; use App\Contracts\TestContract; class TestService implements TestContract { public function callMe($controller){ dd("Call me from TestServiceProvider in ".$controller); } }
在config/app.php文件中providers中添加內(nèi)容,以便進(jìn)行注冊:
... App\Providers\RiakServiceProvider::class,
創(chuàng)建1個(gè)服務(wù)提供類:
php artisan make:provider RiakServiceProvider
其內(nèi)容為:
<?php namespace App\Providers; use App\Services\TestService; use Illuminate\Support\ServiceProvider; class RiakServiceProvider extends ServiceProvider { /** * Bootstrap the application services. * * @return void */ public function boot() { // } /** * Register the application services. * * @return void */ public function register() { $this->app->bind("App\Contracts\TestContract",function(){ return new TestService(); }); } }
在ServiceProvider中提供了2個(gè)方法,其中register方法用于注冊服務(wù),而boot用于引導(dǎo)服務(wù)。
在控制器IndxController中添加如下內(nèi)容:
<?php namespace App\Http\Controllers; use App; use Illuminate\Http\Request; use App\Contracts\TestContract; class IndexController extends Controller { public function __construct(TestContract $test){ $this->test = $test; } public function index(){ $this->test->callMe("IndexController"); } }
訪問瀏覽器可以得到如下的結(jié)果:
"Call me from TestServiceProvider in IndexController"
另外,還可以使用App的make方法進(jìn)行調(diào)用。
public function index(){ $test = App::make('test'); $test->callMe('IndexController'); }
其結(jié)果也是一樣的。
參考文章:
- https://laravelacademy.org/post/796.html
- https://laravelacademy.org/post/93.html
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。
- Laravel框架實(shí)現(xiàn)的rbac權(quán)限管理操作示例
- Laravel5權(quán)限管理方法詳解
- Laravel 5 框架入門(二)構(gòu)建 Pages 的管理功能
- Laravel5.0+框架郵件發(fā)送功能實(shí)現(xiàn)方法圖文與實(shí)例詳解
- Laravel框架集成UEditor編輯器的方法圖文與實(shí)例詳解
- Laravel框架自定義驗(yàn)證過程實(shí)例分析
- laravel5.3 vue 實(shí)現(xiàn)收藏夾功能實(shí)例詳解
- Laravel接收前端ajax傳來的數(shù)據(jù)的實(shí)例代碼
- 在Laravel框架里實(shí)現(xiàn)發(fā)送郵件實(shí)例(郵箱驗(yàn)證)
- Laravel路由設(shè)定和子路由設(shè)定實(shí)例分析
- Laravel框架實(shí)現(xiàn)簡單的學(xué)生信息管理平臺(tái)案例【附源碼下載】
相關(guān)文章
php 中htmlentities導(dǎo)致中文無法查詢問題
php htmlentities用于接受一個(gè)字符串并將該字符串轉(zhuǎn)換為對應(yīng)的HTML實(shí)體,這篇文章主要介紹了php htmlentities導(dǎo)致中文無法查詢問題,,需要的朋友可以參考下2018-09-09微信公眾平臺(tái)開發(fā)(五) 天氣預(yù)報(bào)功能開發(fā)
這篇文章主要介紹了微信公眾平臺(tái)開發(fā)(五) 天氣預(yù)報(bào)功能開發(fā) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12簡單實(shí)用的.net DataTable導(dǎo)出Execl
2013-10-10Laravel5.5 動(dòng)態(tài)切換多語言的操作方式
今天小編就為大家分享一篇Laravel5.5 動(dòng)態(tài)切換多語言的操作方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10Swoole?webSocket消息服務(wù)系統(tǒng)壓力測試解析
這篇文章主要為大家介紹了Swoole?webSocket消息服務(wù)系統(tǒng)壓力測試解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03ThinkPHP6.0如何利用自定義驗(yàn)證規(guī)則規(guī)范的實(shí)現(xiàn)登陸
這篇文章主要介紹了ThinkPHP6.0如何利用自定義驗(yàn)證規(guī)則規(guī)范的實(shí)現(xiàn)登陸,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12ThinkPHP3.2框架使用addAll()批量插入數(shù)據(jù)的方法
這篇文章主要介紹了ThinkPHP3.2框架使用addAll()批量插入數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了thinkPHP針對單條數(shù)據(jù)插入及批量數(shù)據(jù)插入操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-03-03