欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-01-07 14:58:46
前言 laravel服务器容器:是用于管理类依赖和执行依赖注入的工具。下面我们演示下如何创建服务器提供者,它是laravel的核心。话不多说了,来一起看看详细的介绍吧...

前言

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

总结

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

上一篇:

下一篇: