哪个更适合在 PHP 中定义存储库接口?

Which one is better for defining the Repository Interface in PHP?

我的团队为一个新项目使用了 Laravel 框架,我们选择了 Repository 设计模式。我正在实现 Class 接口并通过实现自己的接口在存储库 class 中使用它。 我和我的团队对定义的存储库接口有一些争议,有 3 个案例。

<?php
    namespace App\Repositories\Interfaces;
    interface UserInterface { }

在这个界面里面

/**
    * Pattern 1
    *
    * @param array $parameters
    * @return App\Models\User
    */
    public function get(array $parameters = []);

/**
* Pattern 2
*
* @param array $parameters = []
* @return App\Models\User
*/
public function get(array $parameters = []);

/**
* Pattern 3
*
* @param array $parameters
* @return App\Models\User
*/
public function get(array $parameters);

在存储库中 class

<?php
    namespace App\Repositories;
    class UserRepository implements UserInterface 
    {
         public function get(array $parameter = [])
         {
             return App\Models\User::get();
         }
    }

代码示例定义为方法 get() 并使用 PHP DocBlocks 描述此代码,get 方法可选需要一个数组参数和 return 用户模型。开始谈论团队,通常每个人都需要我们工作的标准,我们选择 2 个人来批准 pull request,以便分支可以合并到 Develop 分支。来自上面示例代码的小话题。

我们可以使用哪一个,在这种情况下,它只是参数中的默认值不同,即空数组。

谢谢大家

使用没有默认值的,修复return

/**
* Pattern 3
*
* @param array $parameters
* @return Illuminate\Support\Collection of App\Models\User
*/
public function get(array $parameters);

此外,您应该改用方法 return a Illuminate\Pagination\LengthAwarePaginator。你不想要一个方法来 return 所有数据库条目。