在Laravel中添加自己的存储库类和接口的位置?

时间:2016-11-19 13:08:30

标签: php laravel web web-deployment

我试图在Laravel中添加自定义代表(合同和Eloquent) 我不明白在哪里添加它们以及如何与服务绑定。 任何正文都可以在Laravel中显示添加自己的wn存储库类和接口的最佳示例吗?

提前致谢

3 个答案:

答案 0 :(得分:2)

  1. 在App文件夹中创建目录。类似于 App / Acme
  2. 在Acme文件夹中创建存储库文件。 App / Acme / CustomRepository.php 并导入该Repository文件的名称空间.Like- 名称空间Acme;
  3. 使用您的模型。喜欢 - 使用App \ Models \ User;
  4. 在你的控制器中注入CustomRepository Class.Like -

    class CustomController扩展Controller {

    private $ customRepo;

    public function __construct(CustomRepository  $customRepo)
    {
    $this->customRepo= $customRepo;
    }
    

    }

答案 1 :(得分:1)

我喜欢构建我的Laravel代码的方式是:

模特 - App\Models\*

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model as BaseModel;

class Model extends BaseModel
{
    // 
}

合同 - App\Repositories\Contracts\*

<?php 

namespace App\Repositories\Contracts;

interface Repository
{
    // All the common methods for eloquent like - all, paginate, find, where, etc...
}

存储库 - App\Repositories\Db\*

<?php 

namespace App\Repositories\Db;

class ExampleRepository
{
    // All the CRUD related methods here...
}

服务 - App\Services\*

<?php 

namespace App\Services;

class ExampleService
{
    // All the logic & business related methods here...
}

这就是我喜欢用laravel方式构建代码的方法。

希望这有帮助!

答案 2 :(得分:0)

对于存储库模式的使用(如果它是你想要说的),你有两个选项,一个是在自定义的命名空间下实现(比如App\Repositories),一个接口使用您想要在所有存储库中使用的方法,可能是AbstractRepository或类似的东西,这一个选择是痛苦的,因为您必须编写大量代码,另一个选择(我将使用的是),是安装以下包https://github.com/andersao/l5-repository,非常有用,并且已经有很多方法,只需按照自述文件的说明操作,你就不会有任何问题实现这个模式,希望它有所帮助,最好! ;)