Laravel如何创建服务器提供者实例代码


Posted in PHP onApril 15, 2019

前言

Laravel服务器容器:是用于管理类依赖和执行依赖注入的工具。下面我们演示下如何创建服务器提供者,它是Laravel的核心。话不多说了,来一起看看详细的介绍吧

在app/Contracts目录下创建TestContract.php文件,其内容为:

<?php 
namespace App\Contracts; 

interface TestContract { 
 public function callMe($controller); 
}

在app/Services目录下创建TestService.php文件,其内容为:

<?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中添加内容,以便进行注册:

... 
App\Providers\RiakServiceProvider::class,

创建1个服务提供类:

php artisan make:provider RiakServiceProvider

其内容为:

<?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个方法,其中register方法用于注册服务,而boot用于引导服务。

在控制器IndxController中添加如下内容:

<?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"); 
 } 
}

访问浏览器可以得到如下的结果:

"Call me from TestServiceProvider in IndexController" 

另外,还可以使用App的make方法进行调用。

public function index(){ 
 $test = App::make('test'); 
 $test->callMe('IndexController'); 
 }

其结果也是一样的。

参考文章:

  • https://laravelacademy.org/post/796.html
  • https://laravelacademy.org/post/93.html

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
最小化数据传输――在客户端存储数据
Oct 09 PHP
main.php
Dec 09 PHP
How do I change MySQL timezone?
Mar 26 PHP
PHP几个数学计算的内部函数学习整理
Aug 06 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
win7下memCache的安装过程(具体操作步骤)
Jun 28 PHP
php网页病毒清除类
Dec 08 PHP
smarty模板引擎之配置文件数据和保留数据
Mar 30 PHP
深入理解PHP内核(一)
Nov 10 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
laravel框架邮箱认证实现方法详解
Nov 22 PHP
YII2框架中日志的配置与使用方法实例分析
Mar 18 PHP
详解如何实现Laravel的服务容器的方法示例
Apr 15 #PHP
php xhprof使用实例详解
Apr 15 #PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 #PHP
vmware linux系统安装最新的php7图解
Apr 14 #PHP
php7新特性的理解和比较总结
Apr 14 #PHP
PHP7新功能总结
Apr 14 #PHP
PHP7内核CGI与FastCGI详解
Apr 14 #PHP
You might like
php XMLWriter类的简单示例代码(RSS输出)
2011/09/30 PHP
php排序算法(冒泡排序,快速排序)
2012/10/09 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
webpack+react+antd脚手架优化的方法
2018/04/02 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
python单线程实现多个定时器示例
2014/03/30 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
浅谈django的render函数的参数问题
2018/10/16 Python
python 经典数字滤波实例
2019/12/16 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
美国在线工具商店:Acme Tools
2018/06/26 全球购物
语文教育专业应届生求职信
2013/11/23 职场文书
化验室技术员岗位职责
2013/12/24 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
培训班通知
2015/04/25 职场文书
高中班长竞选稿
2015/11/20 职场文书