laravel5.4 服务提供者设置

  进行编辑laravel时,需要进行编辑的是App文件夹,在这里我们需要的是两个文件夹Contracts,该文件夹用于存放接口文件,Services中是服务文件,我们首先在Contracts中建立TestContract.php文件内容如下:

<?php
namespace App\Contracts;

interface TestContract{
	public function callMe($controller);
}

在Services当中建立TestServce.php文件

<?php
namespace App\Services;

use App\Contracts\TestContract;

class TestService implements TestContract {
	public function callMe($controller)
	{
		// TODO: Implement callMe() method.
		echo "This is called by ".$controller;
	}
}

在php终端中输入 
php artisan make:provider TestServiceProvider
然后编辑 register函数

<?php

namespace App\Providers;

use App\Services\TestService;
use Illuminate\Support\ServiceProvider;

class TestServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
    	//绑定单例
		$this->app->singleton("test", function($app){
			return new TestService();
		});
		//使用接口进行绑定
		$this->app->bind('App\Contracts\TestContract', function(){
			return new TestService();
		});
    }
}

所以会有两种方式进行获得实例化,一个是App::make("test")获得TestService类的对象,另一种则是通过接口App\Contracts\TestContract获得TestService类的对象

这样就OK了,接下来就做的是创建一个controller

php artisan make:controller TestController

接下来看下TestController

<?php

namespace App\Http\Controllers;

use App\Contracts\TestContract;
use Illuminate\Http\Request;

class TestController extends Controller
{
    //

	public function __construct(TestContract $test) {
		$this->test = $test;
	}

	public function index(){
		//$test = \App::make("test");
		$this->test->callMe("test");
	}
}

这样就通过服务提供者调用了TestService!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值