aungmyokyaw/lara-arch

v1.0.0 2023-08-30 11:17 UTC

This package is auto-updated.

Last update: 2024-09-14 07:05:56 UTC


README

Lara-Arch CLI 工具包是一个功能全面的工具和组件集合,旨在增强 Laravel 应用程序的命令行界面 (CLI) 功能。此包提供了一系列功能,以简化开发、改进代码组织和优化命令行交互。

  • DTO
  • 服务
  • 特性
  • 枚举
  • 仓库

安装

使用 Composer 安装 Lara-Arch CLI 工具包

composer require aungmyokyaw/lara-arch

功能

DTO CLI 生成器

使用 DTO CLI 生成器轻松创建数据传输对象 (DTO)。设计 DTO 以封装数据并提高应用程序不同部分之间的数据完整性。

php artisan make:dto [Filename]

服务 CLI 生成器

使用 Service CLI 生成器生成服务类。服务对于封装业务逻辑和促进应用程序中关注点的清晰分离至关重要。

php artisan make:service [Filename]

特性 CLI 生成器

使用 Trait CLI 生成器设计和生成可重用的特性。特性使您能够封装可以跨多个类共享的常见功能。

php artisan make:trit [Filename]

枚举 CLI 生成器

使用 Enum CLI 生成器简化 Laravel 应用程序中枚举 (enum) 的创建。轻松定义自定义枚举类型,并自动生成适当的值和方法。

php artisan make:enum [Filename]

枚举辅助函数

  • enum_from_key($enumCases, $key)
  • enum_from_value($enumCases, $value)

这两个 Enum 辅助函数用于在 Laravel 应用程序中处理枚举。以下是这两个辅助函数的示例用法。

enum Status : int {
    case Pending = 0;
    case Approved = 1;
}

enum_from_key($enumCases, $key)

enum_from_key(Status::cases(),'Approved') // output = 1

enum_from_value($enumCases, $value)

enum_from_value(Status::cases(),0) // output = "Pending"

仓库 CLI 生成器

使用仓库 CLI 生成器高效地生成仓库类。实现仓库模式以抽象数据库操作并促进清洁架构。此仓库附带预构建的 CRUD 操作,可以直接使用或按需自定义。

php artisan make:repository [Filename] --model=[ModelName]

以下是 CRUD 操作的仓库示例用法。

php artisan make:repository UserRepository --model=User

这将创建一个位于 app/repositories 目录下的 UserRepository.php 仓库文件。

namespace App\Repositories;

use Amk\LaraArch\BaseRepository;
use App\Models\User;

class UserRepository extends BaseRepository {
    public function getModel(){
        return User::class;
    }
}

CRUD 示例用法

$userRepository = new UserRepository();

// Create a new user
$userRepository->create(['name' => 'John Doe', 'email' => 'john@example.com']);

// Find a user by ID
$userRepository->find(1);

// Update a user's information
$userRepository->update(1, ['name' => 'Updated Name']);

// Delete a user
$userRepository->delete(1);

// Retrieve all users
$users = $userRepository->all();

// Retrieve all users with paginate
$users = $userRepository->paginate(10);

// Retrieve users using where query
$users = $userRepository->all(['email' => 'john@example.com']);