哪个更适合在 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 所有数据库条目。
我的团队为一个新项目使用了 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 所有数据库条目。