您的位置:首页 > 编程学习 > > 正文

laravel服务提供者应用场景(Laravel如何创建服务器提供者实例代码)

更多 时间:2022-03-31 00:33:16 类别:编程学习 浏览量:680

laravel服务提供者应用场景

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

前言

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

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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • <?php
  • namespace App\Contracts;
  •  
  • interface TestContract {
  •  public function callMe($controller);
  • }
  • 在app/Services目录下创建TestService.php文件,其内容为:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • <?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中添加内容,以便进行注册:

  • ?
  • 1
  • 2
  • ...
  • App\Providers\RiakServiceProvider::class,
  • 创建1个服务提供类:

  • ?
  • 1
  • php artisan make:provider RiakServiceProvider
  • 其内容为:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • <?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中添加如下内容:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • <?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方法进行调用。

  • ?
  • 1
  • 2
  • 3
  • 4
  • public function index(){
  •  $test = App::make('test');
  •  $test->callMe('IndexController');
  •  }
  • 其结果也是一样的。

    参考文章:

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

    总结

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

    原文链接:http://blog.hellopython.wang/laravel-serviceprovider/

    您可能感兴趣