Php 在Laravel中在何处添加自己的存储库类和接口?

Php 在Laravel中在何处添加自己的存储库类和接口?,php,laravel,web,web-deployment,Php,Laravel,Web,Web Deployment,我正在尝试在Laravel中添加自定义代表(合同和雄辩)。 我不知道在哪里添加它们,以及如何与服务绑定。 任何主体都可以展示在Laravel中添加自己的wn存储库类和接口的最佳示例吗 提前感谢使用repository模式(如果这是您想要说的),您有两个选项,一个是在自定义名称空间下实现(比如说App\Repositories),一个包含您希望在所有存储库中使用的方法的接口,可能是AbstractRepository或类似的东西,这一个选择是痛苦的,因为您需要编写大量代码,另一个选择(我将使用)是

我正在尝试在Laravel中添加自定义代表(合同和雄辩)。
我不知道在哪里添加它们,以及如何与服务绑定。 任何主体都可以展示在Laravel中添加自己的wn存储库类和接口的最佳示例吗


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

  • 在应用程序文件夹中创建目录。如-App/Acme
  • 在Acme文件夹中创建存储库文件App/Acme/CustomRepository.php并导入该存储库文件上的名称空间。如-名称空间Acme
  • 使用你的模型。类似-使用App\Models\User
  • 在您的控制器中注入CustomRepository类-

    类CustomController扩展控制器{

    私人回购

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


  • 我喜欢用以下方式构造我的Laravel代码:

    型号-
    App\Models\*

    <?php
    
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model as BaseModel;
    
    class Model extends BaseModel
    {
        // 
    }
    
    <?php 
    
    namespace App\Repositories\Contracts;
    
    interface Repository
    {
        // All the common methods for eloquent like - all, paginate, find, where, etc...
    }
    
    <?php 
    
    namespace App\Services;
    
    class ExampleService
    {
        // All the logic & business related methods here...
    }
    
    存储库-
    App\Repositories\Db\*

    <?php 
    
    namespace App\Repositories\Db;
    
    class ExampleRepository
    {
        // All the CRUD related methods here...
    }
    
    这就是我喜欢用laravel的方式构造代码的原因


    希望这有帮助

    我不太明白。拉雷维尔已经包含了雄辩的。你到底想做什么?我有一个小项目,我不想增加额外的软件包。我想知道目录结构。好的,在这种情况下,使用这个教程,他们在那里解释,上面的链接,最好的!谢谢这就是我需要的。@vijaykumarervma如果你使用雄辩的语言,你不需要使用存储库。你有什么理由使用repository吗?如果你有一个非常棒的项目,并且想添加一个额外的层来保持清楚,我会理解的,但是如果你有一个像你所说的小项目,我认为你可以使用Elount开箱即用