当前位置:首页 > CMS教程 > 其它CMS > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-18 17:47:59 浏览: 评论:0 

这篇文章主要给大家介绍了关于Laravel如何创建服务器提供者的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Laravel具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。

前言

Laravel服务器容器:是用于管理类依赖和执行依赖注入的工具。下面我们演示下如何创建服务器提供者,它是Laravel的核心,话不多说了,来一起看看详细的介绍吧

在app/Contracts目录下创建TestContract.php文件,其内容为:

  1. <?php  
  2. namespace App\Contracts;  
  3.  
  4. interface TestContract {  
  5.  public function callMe($controller);  

在app/Services目录下创建TestService.php文件,其内容为:

  1. <?php  
  2. namespace App\Services;  
  3. use App\Contracts\TestContract;  
  4.  
  5. class TestService implements TestContract {  
  6.  public function callMe($controller){  
  7.  dd("Call me from TestServiceProvider in ".$controller);  
  8.  }  

在config/app.php文件中providers中添加内容,以便进行注册:

...

App\Providers\RiakServiceProvider::class,

创建1个服务提供类:

php artisan make:provider RiakServiceProvider

其内容为:

  1. <?php  
  2.  
  3. namespace App\Providers;  
  4.  
  5. use App\Services\TestService;  
  6. use Illuminate\Support\ServiceProvider;  
  7.  
  8. class RiakServiceProvider extends ServiceProvider  
  9. {  
  10.  /**  
  11.  * Bootstrap the application services.  
  12.  *  
  13.  * @return void  
  14.  */ 
  15.  public function boot()  
  16.  {  
  17.  //  
  18.  }  
  19.  
  20.  /**  
  21.  * Register the application services.  
  22.  *  
  23.  * @return void  
  24.  */ 
  25.  public function register()  
  26.  {  
  27.  $this->app->bind("App\Contracts\TestContract",function(){  
  28.   return new TestService();  
  29.  });  
  30.  }  

在ServiceProvider中提供了2个方法,其中register方法用于注册服务,而boot用于引导服务。

在控制器IndxController中添加如下内容:

  1. <?php  
  2.  
  3. namespace App\Http\Controllers;  
  4.  
  5. use App;  
  6. use Illuminate\Http\Request;  
  7. use App\Contracts\TestContract;  
  8.  
  9. class IndexController extends Controller  
  10. {  
  11.  public function __construct(TestContract $test){  
  12.  $this->test = $test;  
  13.  }  
  14.  public function index(){  
  15.  $this->test->callMe("IndexController");  
  16.  }  

访问浏览器可以得到如下的结果:

"Call me from TestServiceProvider in IndexController"

另外,还可以使用App的make方法进行调用。

  1. public function index(){  
  2.  $test = App::make('test');  
  3.  $test->callMe('IndexController');  
  4.  } 

其结果也是一样的。

参考文章:

https://laravelacademy.org/post/796.html

https://laravelacademy.org/post/93.html

Tags: Laravel创建服务器

分享到: