laravel Repositories模式使用|laravel 仓库模式使用

laravel Repositories模式使用|laravel 仓库模式使用

看了好多文章 但是真真一个照抄正常使用的没有,研究了一下 下边直接教学

首先建立文件夹目录如下:

微信截图_20180914130726.png

在App目录下建立Repository文件下

Repository下建立:

Interfaces文件夹

Repositories文件夹

下边创建Service文件:

php artisan make:provider RepositoryServiceProvider

RepositoryServiceProvider代码:

public function register()
{
    //测试models
    $this->app->bind(
        'App\Repository\Interfaces\TestInterface',
        'App\Repository\Repositories\TestRepository'
    );
}

微信截图_20180914125139.png

如图:

测试models是绑定接口文件和实现接口文件的 以后有所有的接口和接口实现文件都在这里注册

多个怎么写?好吧!看代码:(下买代码可以看懂吧!)

public function register()
{
    //测试models
    $this->app->bind(
        'App\Repository\Interfaces\TestInterface',
        'App\Repository\Repositories\TestRepository'
    );
    //测试models1
    $this->app->bind(
        'App\Repository\Interfaces\Test1Interface',
        'App\Repository\Repositories\Test1Repository'
    );
    //测试models2
    $this->app->bind(
        'App\Repository\Interfaces\Test2Interface',
        'App\Repository\Repositories\Test2Repository'
    );
}

然后在config/app.php中注册这个服务

App\Providers\RepositoryServiceProvider::class, #'providers' => [后边添加

微信截图_20180914125326.png

下开始写接口和接口实现文件

TestInterface接口文件(位置:App\Repository\Interfaces下)

<?php
namespace App\Repository\Interfaces;

interface TestInterface{
    public function findAll();

    public function findOne($id);
}

TestInterface接口文件(位置:App\Repository\Repositories下)

<?php

namespace App\Repository\Repositories;

use App\Models\Test;
use App\Repository\Interfaces\TestInterface;

class TestRepository implements TestInterface {
    public function findOne($id)
    {
        // TODO: Implement findOne() method.
        return Test::find($id)->toArray();
    }

    public function findAll()
    {
        // TODO: Implement findAll() method.
        return Test::all()->toArray();
    }
}

ok 上面仓库的代码就差不都了 下边开始控制器中使用了

TestController控制器代码:(models代码我就不写了! 如果不会 百度吧~)

<?php

namespace App\Http\Controllers;

use App\Repository\Interfaces\TestInterface;

class TestController extends Controller
{
    protected  $test;

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

    //
    public function index(){
        var_dump($this->test->findOne(1));
        var_dump($this->test->findAll());
    }
}

OK  laravel的仓库模式的一个例子出来了 以后直接按这样写就行!

laravel Repositories模式使用|laravel 仓库模式使用

喜欢(5)

评论 抢沙发

表情