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 相关文章推荐
使用eAccelerator加密PHP程序
Oct 03 PHP
PHP正确配置mysql(apache环境)
Aug 28 PHP
php增删改查示例自己写的demo
Sep 04 PHP
php中字符集转换iconv函数使用总结
Oct 11 PHP
php查询ip所在地的方法
Dec 05 PHP
PHP+MySQL插入操作实例
Jan 21 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
Mar 19 PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
在Laravel 中实现是否关注的示例
Oct 22 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
Dec 12 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
一个改进的UBB类
2006/10/09 PHP
PHP nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
2009/08/21 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
php中chdir()函数用法实例
2014/11/13 PHP
详解js异步文件加载器
2016/01/24 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
php获取微信openid方法总结
2019/10/10 PHP
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
Python collections模块实例讲解
2014/04/07 Python
python获得一个月有多少天的方法
2015/06/04 Python
Python中常见的数据类型小结
2015/08/29 Python
python实现发送邮件及附件功能
2021/03/02 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
pandas求两个表格不相交的集合方法
2018/12/08 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
2019/01/23 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
结婚邀请函范文
2014/01/14 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL