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 相关文章推荐
人大复印资料处理程序_输入篇
Oct 09 PHP
程序员编程十条戒律
Jul 09 PHP
基于Discuz security.inc.php代码的深入分析
Jun 03 PHP
php无限分类且支持输出树状图的详细介绍
Jun 19 PHP
php网站判断用户是否是手机访问的方法
Nov 01 PHP
thinkphp使用phpmailer发送邮件的方法
Nov 24 PHP
CI框架数据库查询之join用法分析
May 18 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 PHP
wordpress自定义标签云与随机获取标签的方法详解
Mar 22 PHP
微信推送功能实现方式图文详解
Jul 12 PHP
php装饰者模式简单应用案例分析
Oct 23 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中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python映射拆分操作符用法实例
2015/05/19 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
django框架使用方法详解
2019/07/18 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
python的setattr函数实例用法
2020/12/16 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
护士专业推荐信
2013/11/02 职场文书
学校办公室主任职责
2013/12/27 职场文书
美容师的职业规划书
2013/12/27 职场文书
农村婚礼证婚词
2014/01/08 职场文书
网络技术专业求职信
2014/02/18 职场文书
高一学生期末评语
2014/04/25 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书