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 相关文章推荐
一个php作的文本留言本的例子(四)
Oct 09 PHP
建立文件交换功能的脚本(二)
Oct 09 PHP
php使用websocket示例详解
Mar 12 PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
PHP简单实现生成txt文件到指定目录的方法
Apr 25 PHP
PHP解决中文乱码
Apr 28 PHP
详谈php中 strtr 和 str_replace 的效率问题
May 14 PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 PHP
php中用unset销毁变量并释放内存
May 10 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
PHP6 先修班 JSON实例代码
2008/08/23 PHP
php下批量挂马和批量清马代码
2011/02/27 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
vue-devtools的安装步骤
2018/04/23 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
selenium如何定位span元素的实现
2021/01/13 Python
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
材料物理专业大学毕业生求职信
2013/10/15 职场文书
岗位职责的含义
2013/11/17 职场文书
公司新员工的演讲稿注意事项
2014/01/01 职场文书
上班上网检讨书
2014/01/29 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
工程技术员岗位职责
2014/03/02 职场文书
社区先进事迹材料
2014/05/19 职场文书
大学生见习报告范文
2014/11/03 职场文书
2014年会计工作总结
2014/11/27 职场文书
2015年招聘工作总结
2014/12/12 职场文书
会议通知范文
2015/04/15 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python