Laravel 服务提供者实例教程 —— 创建 Service Provider 测试实例

1.定义服务类

1.1定义TestContract

namespace App\Contracts;

interface TestContract

{

    public function callMe($controller);

}

1.2定义TestService

namespace App\Services;

use App\Contracts\TestContract;

class TestService implements TestContract

{

    public function callMe($controller)

    {

        dd('Call Me From TestServiceProvider In '.$controller);

    }

}

2.创建服务提供者

php artisan make:provider TestServiceProvider

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use App\Services\TestService;

class TestServiceProvider extends ServiceProvider

{

    /**

    * Bootstrap the application services.

    *

    * @return void

    */

    public function boot()

    {

        //

    }

    /**

    * Register the application services.

    *

    * @return void

    * @author LaravelAcademy.org

    */

    public function register()

    {

        //使用singleton绑定单例

        $this->app->singleton('test',function(){

            return new TestService();

        });

        //使用bind绑定实例到接口以便依赖注入

        $this->app->bind('App\Contracts\TestContract',function(){

            return new TestService();

        });

    }

}

3.注册服务提供者

'providers' => [

    //其他服务提供者

    App\Providers\TestServiceProvider::class,

],

4.测试服务提供者

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

use App\Http\Controllers\Controller;

use App;

use App\Contracts\TestContract;

class TestController extends Controller

{

    //依赖注入

    public function __construct(TestContract $test){

        $this->test = $test;

    }

    /**

    * Display a listing of the resource.

    *

    * @return Response

    * @author LaravelAcademy.org

    */

    public function index()

    {

        // $test = App::make('test');

        // $test->callMe('TestController');

        $this->test->callMe('TestController');

    }

    ...//其他控制器动作

}

你可能感兴趣的:(Laravel 服务提供者实例教程 —— 创建 Service Provider 测试实例)