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&amp;mysql(三)
Oct 09 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
Oct 29 PHP
PHP字符串的递增和递减示例介绍
Feb 11 PHP
php教程之phpize使用方法
Feb 12 PHP
php获取文件大小的方法
Feb 26 PHP
PHP中if和or运行效率对比
Dec 12 PHP
php给一组指定关键词添加span标签的方法
Mar 31 PHP
Yii2表单事件之Ajax提交实现方法
May 04 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
原生php实现excel文件读写的方法分析
Apr 25 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 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采集相关教程之一 CURL函数库
2010/02/15 PHP
php 深入理解strtotime函数的使用详解
2013/05/23 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
python传递参数方式小结
2015/04/17 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
python如何从键盘获取输入实例
2020/06/18 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
5款实用的python 工具推荐
2020/10/13 Python
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
软件测试有哪些?什么是配置项?
2012/02/12 面试题
计算机专业应届毕业生自荐信
2013/09/26 职场文书
四年大学生活的个人自我评价
2013/12/11 职场文书
煤矿班组长岗位职责
2013/12/29 职场文书
施工员岗位职责
2014/03/16 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫