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中的正则表达式
Aug 17 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
ThinkPHP路由详解
Jul 27 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
PHP编程基本语法快速入门手册
Jan 07 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
CI框架AR数据库操作常用函数总结
Nov 21 PHP
php正则修正符用法实例详解
Dec 29 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 PHP
php7中停止php-fpm服务的方法详解
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
第三节 定义一个类 [3]
2006/10/09 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
2016/08/06 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
python中set()函数简介及实例解析
2018/01/09 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
python的concat等多种用法详解
2018/11/28 Python
Python之pymysql的使用小结
2019/07/01 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
pytorch数据预处理错误的解决
2020/02/20 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
Python json转字典字符方法实例解析
2020/04/13 Python
python入门教程之基本算术运算符
2020/11/13 Python
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
教师实习自我鉴定
2013/12/13 职场文书
总经理职责
2013/12/22 职场文书
顶岗实习计划书
2015/01/16 职场文书
应届毕业生自荐信
2015/03/04 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书