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 开发工具
Dec 06 PHP
php预定义常量
Dec 25 PHP
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
如何使用PHP计算上一个月的今天
May 23 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 PHP
PHP中获取时间的下一周下个月的方法
Mar 18 PHP
UTF-8正则表达式如何匹配汉字
Aug 03 PHP
php实现保存周期为1天的购物车类
Jul 07 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
Oct 12 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 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 UTF-8、Unicode和BOM问题
2010/05/18 PHP
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
PHP字符串的连接的简单实例
2013/12/30 PHP
php微信开发自定义菜单
2016/08/27 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
鼠标经过的文本框textbox变色
2009/05/21 Javascript
ExtJS下grid的一些属性说明
2009/12/13 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
可简单避免的三个JS发布错误的详细介绍
2013/08/02 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
浅谈JS使用[ ]来访问对象属性
2016/09/21 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
详解python中的index函数用法
2019/08/06 Python
python标准库OS模块详解
2020/03/10 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
Python实现自动整理文件的脚本
2020/12/17 Python
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
银行先进个人事迹材料
2014/05/11 职场文书
环保志愿者活动总结
2014/06/27 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
起诉书范文
2015/05/20 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang