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
php的header和asp中的redirect比较
Oct 09 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
Jun 21 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
php顺序查找和二分查找示例
Mar 27 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
PHP用户验证和标签推荐的简单使用
Oct 31 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
Apr 15 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Mar 09 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时的知识积累总结
2013/06/07 PHP
php define的第二个参数使用方法
2013/11/04 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
广告显示判断
2006/08/31 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
JS按条件 serialize() 对应标签的使用方法
2017/07/24 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
如何使用python操作vmware
2019/07/27 Python
python3实现高效的端口扫描
2019/08/31 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
工商管理实习自我鉴定
2013/09/28 职场文书
电子商务毕业生求职信
2013/11/10 职场文书
网络教育自我鉴定
2014/02/04 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
个人工作主要事迹
2014/05/08 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang
golang中的struct操作
2021/11/11 Golang
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers