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基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 PHP
php获取某个目录大小的代码
Sep 10 PHP
用PHP查询搜索引擎排名位置的代码
Jan 05 PHP
php新建文件自动编号的思路与实现
Jun 27 PHP
比file_get_contents稳定的curl_get_contents分享
Jan 11 PHP
php5.3 注意事项说明
Jul 01 PHP
php多文件上传下载示例分享
Feb 20 PHP
PHP可变函数学习小结
Nov 29 PHP
学习php设计模式 php实现备忘录模式(Memento)
Dec 09 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
Aug 30 PHP
PHP7创建销毁session的实例方法
Feb 03 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 checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
10条PHP高级技巧[修正版]
2011/08/02 PHP
php实现的双向队列类实例
2014/09/24 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
php中用unset销毁变量并释放内存
2020/05/10 PHP
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
vue.js实现简单轮播图效果
2017/10/10 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
Python常用的日期时间处理方法示例
2015/02/08 Python
python3人脸识别的两种方法
2019/04/25 Python
python读取并写入mat文件的方法
2019/07/12 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
医学生自我评价
2014/01/27 职场文书
小学班级口号
2014/06/09 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
Android中的Launch Mode详情
2022/06/05 Java/Android
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技