maamun7 / serpository
通过 artisan 命令生成服务、仓库并注入,以支持可扩展的 Laravel 应用。
Requires
- php: >=7.4
- symfony/console: *
- symfony/filesystem: *
This package is auto-updated.
Last update: 2024-09-16 20:26:42 UTC
README
我们许多 Laravel 开发者喜欢在 Laravel 应用中使用 Service-Repository 模式来开发可扩展的应用程序。因此,手动创建这些 Service、Repository 类既耗时又令人烦恼。
我多次遇到过这个问题,因此我开发了这个包,以便让我的任务更简单。我坚信我们许多人都有这个问题。因此,我决定将其公开。
此包提供了同时创建 service & repository 并通过 artisan 命令注入它们的便利。除此之外,人们还可以单独创建 service 或 repository。更多详情请参考特性部分。
需求
此包需要 php 版本 >=7.4 和 Laravel 版本 >=8
安装
- 使用 composer 安装此包
composer require maamun7/serpository
- 将 Serpository 服务提供者添加到 config/app.php 中的 providers 数组
Maamun7\Serpository\SerpositoryServiceProvider::class,
特性
- 创建服务
php artisan make:service User
如果 app
目录内没有 Services
目录,首先上述命令将创建该目录,然后在此创建目录中通过提供的名称和 Service
后缀创建一个 Service
类。例如:UserService
。
- 创建仓库
php artisan make:repo User OR php artisan make:repository User
如果 app
目录内没有 Repositories
目录,首先上述命令将创建该目录,然后在创建的 Repositories/Eloquents
目录中通过提供的名称和 Repository
后缀创建一个 Repository
类。例如:UserRepository
。
此外,仓库将有一个注入的 Interface
,该接口位于仓库内的单独 Interfaces
目录中。
此外,此命令将在 app\Models
目录中通过提供的仓库名称搜索模型,并添加一些后缀(例如:假设提供的名称是 User,则将搜索 User、Users、UserModel 和 User_Model)。如果存在具有这些名称的模型,则将其注入到仓库中;否则,将注入一个具有提供的基础名称的模型。
- 使用相同名称创建服务和仓库
php artisan make:service User --r
标志 --r
允许创建具有相同基础名称的服务和仓库。此外,创建的仓库将自动注入到该服务中。
- 使用不同名称创建服务和仓库
php artisan make:service User --r --repo=MyUser
上述命令将创建一个名为 UserService
的服务和名为 MyUserRepository
的仓库。此仓库也将自动注入到该服务中。
它与控制器如何协同工作?
以下示例显示了它与控制器协同工作的方式。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Services\UserService;
class UserController extends Controller
{
protected $userService;
/**
* @param UserService $userService
*/
public function __construct(UserService $userService)
{
$this->userService = $userService;
}
public function index()
{
$users = $this->userService->getAll();
}
}
许可
Serpository 是一个免费软件,在 MIT 许可证的条款下分发。