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
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 PHP
优化PHP代码的53条建议
Mar 27 PHP
简单示例AJAX结合PHP代码实现登录效果代码
Jul 25 PHP
PHP中常用的字符串格式化函数总结
Nov 19 PHP
PHP保存session到memcache服务器的方法
Jan 19 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
May 26 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
Nov 16 PHP
利用ajax和PHP实现简单的流程管理
Mar 23 PHP
老生常谈PHP面向对象之注册表模式
May 26 PHP
php插件Xajax使用方法详解
Aug 31 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 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
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
JS实现点击下载的小例子
2013/07/10 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
Python 多线程抓取图片效率对比
2016/02/27 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
DELPHI中如何调用API,可举例说明
2014/01/16 面试题
商务英语应届生自我鉴定
2013/12/08 职场文书
政法大学毕业生自荐信范文
2014/01/01 职场文书
疾病捐款倡议书
2014/05/13 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
毕业实习感受与体会
2015/05/26 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server