tharindu/facade_generator

一个用于生成门面和服务的 Laravel 扩展包。

v1.0.0 2024-07-04 10:57 UTC

This package is auto-updated.

Last update: 2024-09-04 11:18:33 UTC


README

Laravel 域名生成器 是一个扩展包,它为您的 Laravel 应用程序提供了一种方便的方式来生成域服务和门面。

安装

您可以通过 Composer 安装此扩展包

composer require tharindu/facade_generator

用法

要生成域服务和门面,请使用 make:domain Artisan 命令

php artisan make:domain User

此命令将在 domain 目录中创建以下文件

  • ServiceNameFacade.php
  • ServiceNameService.php

然后您可以使用这些文件来实现您的域逻辑。

自动加载域目录

为确保 Laravel 自动加载您的自定义 domain 目录,您需要更新 Laravel 应用的 composer.json 文件。按照以下步骤操作

  1. 打开您的 Laravel 应用的 composer.json 文件。

  2. 定位到 autoload 部分。 它应该看起来像这样

    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    },
  3. 将您的 domain 目录添加到 PSR-4 自动加载部分。 如果您的域目录位于 Laravel 应用的根目录,您可以这样添加

    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Domain\\": "domain/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    },

    请确保根据您应用的实际结构调整路径 "Domain\\""domain/"

  4. 运行 composer dump-autoload 以重新生成 Composer 自动加载器文件

    composer dump-autoload

一旦进行这些更改,Laravel 将像对待 app 目录一样自动加载来自您的 domain 目录的类,使您的域逻辑在整个应用程序中易于访问。

功能

此扩展包提供了以下功能

  1. 生成域服务和门面:使用 make:domain 命令轻松创建域服务和门面。
  2. CRUD 功能:生成的服务占位符包含管理域实体的基本 CRUD 操作。
    • 创建:创建新的域实体。
    • 读取:检索特定的域实体。
    • 更新:更新现有的域实体。
    • 删除:删除域实体。
    • 列表:检索域实体的列表。

示例

生成域

要生成名为 User 的域服务和门面,请运行

php artisan make:domain User

这将创建 UserFacade.phpUserService.php 文件到 domain 目录。

使用生成的文件

一旦文件生成,您可以在服务方法内部实现您的域逻辑。例如

<?php

namespace Domain\Services\UserService;

use App\Models\User;

class UserService
{
    protected $user;

    public function __construct()
    {
        $this->user = new User();
    }

    public function get(int $user_id)
    {
        return $this->user->find($user_id);
    }

    public function create(array $data)
    {
       return $this->user->create($data);
    }

    public function read($id)
    {
        // Implement read functionality
    }

     protected function edit(User $user, array $data)
    {
        return array_merge($user->toArray(), $data);
    }

    public function update($user_id , array $data)
    {
        $user = $this->user->find($user_id);
        return $user->update($this->edit($user, $data));
    }

    public function delete($id)
    {
       $user = $this->user->find($id);
       return $user->delete();
    }

    public function list()
    {
       return $this->user->all();
    }
}

贡献

欢迎贡献!请随时提交拉取请求。

许可证

Laravel 域名生成器是开源软件,受 MIT 许可证 许可。