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 相关文章推荐
header()函数使用说明
Nov 23 PHP
PHP字符串的编码问题的详细介绍
Apr 27 PHP
destoon调用自定义模板及样式的公告栏
Jun 21 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
php获取CSS文件中图片地址并下载到本地的方法
Dec 02 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
PHP获取客户端及服务器端IP的封装类
Jul 21 PHP
php的socket编程详解
Nov 20 PHP
php微信公众平台开发(四)回复功能开发
Dec 06 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
如何通过PHP实现Des加密算法代码实例
May 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实现网页缓存的工具类分享
2015/07/14 PHP
PHP中类的继承和用法实例分析
2016/05/24 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
PHP学习记录之数组函数
2018/06/01 PHP
Jquery读取URL参数小例子
2013/08/30 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
基于React+Redux的SSR实现方法
2018/07/03 Javascript
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
js实现左右轮播图
2020/01/09 Javascript
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
flask中的wtforms使用方法
2018/07/21 Python
python实现桌面托盘气泡提示
2019/07/29 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
会话Bean的种类
2013/11/07 面试题
LINUX下线程,GDI类的解释
2016/12/14 面试题
计算机大学生的自我评价
2013/10/15 职场文书
英语专业应届生求职信范文
2013/11/15 职场文书
创意活动策划书
2014/01/15 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
教务处教学工作总结
2015/08/10 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS