首页 > 其他 > 详细

laravel service provider 简单实例

时间:2021-07-14 10:14:20      阅读:20      评论:0      收藏:0      [点我收藏+]

1、创建服务类

技术分享图片

Student.php

namespace App\Service\School;

class Student
{
    protected $TafficTool;

    function __construct(WayToSchool $foot)
    {
        $this->TafficTool = $foot;
    }

    public function goToSchool()
    {
        $this->TafficTool->goToSchool();
    }
}

  

WayToSchool.php
namespace App\Service\School;

interface WayToSchool
{
    public function goToSchool();
}

  

Foot.php

namespace App\Service\School;

class Foot implements WayToSchool
{

    public function goToSchool()
    {
        // TODO: Implement goToSchool() method.
        echo "walk to school";
    }
}

 

2、创建service provider

namespace App\Providers;
use App\Service\School;
use Illuminate\Support\ServiceProvider;

class StudentServiceProvider extends ServiceProvider
{

    protected $defer = false;
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {

        $this->app->singleton(‘student‘,function(){
            return new School\Student(new School\Bike());//不使用WayToSchoolServiceProvider.php  默认的 Foot,实现个性化的需求
        });

       //$this->app->singleton(‘Student‘,\App\Service\School\Student::class);//使用自动注入解决依赖
    }

}

WayToSchool.php

namespace App\Providers;
use App\Service\School;
use Illuminate\Support\ServiceProvider;

class WayToSchoolServiceProvider extends ServiceProvider
{

    public function register()
    {

        $this->app->singleton(School\WayToSchool::class,‘App\Service\School\Foot‘);//接口 App\Service\School\WayToSchool 默认使用App\Service\School\Foot去实例化
    }

}

  

3、写到配置文件 config/app.php 的 providers数组

        App\Providers\WayToSchoolServiceProvider::class,
        App\Providers\StudentServiceProvider::class,

  

4、使用

routes/web.php

Route::get(‘std‘, function () {
    app(‘student‘)->goToSchool();
})

  

输出:by bike to school

 

 

laravel service provider 简单实例

原文:https://www.cnblogs.com/jinshao/p/15009026.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!