Laravel如何创建服务器提供者实例代码

所属分类: 网络编程 / PHP编程 阅读数: 745
收藏 0 赞 0 分享

前言

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

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

更多精彩内容其他人还在看

解决laravel中日志权限莫名变成了root的问题

今天小编就为大家分享一篇解决laravel中日志权限莫名变成了root的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Laravel框架中集成MongoDB和使用详解

今天小编就为大家分享一篇Laravel框架中集成MongoDB和使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

浅谈laravel框架sql中groupBy之后排序的问题

今天小编就为大家分享一篇浅谈laravel框架sql中groupBy之后排序的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

mac pecl 安装php7.1扩展教程

今天小编就为大家分享一篇mac pecl 安装php7.1扩展教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Mac下关于PHP环境和扩展的安装详解

今天小编就为大家分享一篇Mac下关于PHP环境和扩展的安装详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

laravel 解决groupBy时出现的错误 isn't in Group By问题

今天小编就为大家分享一篇laravel 解决groupBy时出现的错误 isn't in Group By问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Laravel 框架返回状态拦截代码

今天小编就为大家分享一篇Laravel 框架返回状态拦截代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

在laravel框架中实现封装公共方法全局调用

今天小编就为大家分享一篇在laravel框架中实现封装公共方法全局调用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

在Laravel 的 Blade 模版中实现定义变量

今天小编就为大家分享一篇在Laravel 的 Blade 模版中实现定义变量,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Laravel基础_关于view共享数据的示例讲解

今天小编就为大家分享一篇Laravel基础_关于view共享数据的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多