>  기사  >  PHP 프레임워크  >  나만의 코드 생성 패키지 laravel-generator 만들기

나만의 코드 생성 패키지 laravel-generator 만들기

藏色散人
藏色散人앞으로
2020-09-28 13:28:272121검색

튜토리얼 칼럼에서는 코드 생성 패키지인 Laravel-Generator를 소개할 예정인데, 필요한 친구들에게 도움이 되었으면 좋겠습니다!

나만의 코드 생성 패키지 laravel-generator 만들기

Laravel-generator 코드 생성 패키지

https://github.com/HogenYuan/laravel-generator

소개

요즘 배경 작업을 하다가 필요한 게 있어요 Gii와 유사한 코드 생성 패키지가 인터넷에 많이 있을 수 있지만, 아직 이에 대해 자세히 배운 적이 없기 때문에 그냥 내 습관에 따라 사용하기 편리한 패키지를 작성했습니다. 서두르세요. 코드가 거칠어질 수 있습니다. 현재는 백엔드만 작성했는데, 시간이 나면 프론트엔드도 작성해보겠습니다. 1. 사용자 정의 프레임워크 디렉토리에 따라 사용자 정의 초기 코드를 생성하도록 *.stub를 수정합니다.

2. 모델 + 필터 + 요청 + 리소스 + 서비스 + 컨트롤러 + 마이그레이션 + 테스트

3를 지원합니다. 동일한 이름의 데이터 테이블을 자동으로 읽고 모델 + 리소스 + 마이그레이션


model + filter + request + resource + service + controller + migration + test

3. 自动读取同名数据表并填充到 model + resource + migration 的字段


Installation

composer require hogen\laravel-generator

php artisan vendor:publish --tag=generator
  • config/app.php
'providers' => [

    ···    App\Console\Commands\Generator\GeneratorServiceProvider::class];

Run

  • 请先根据自己的框架目录和代码格式修改默认代码格式stub文件
## name : 必填,短横式命名的资源名称}## --module= : 必填,指定三级模块(大小写规范) 如:GasStation/MainCard/Balance## --prefix= : 指定二级前缀(大小写规范) 默认:AdminApi## --baseDir= : 指定一级目录(大小写规范) 默认:Http## --force : 覆盖已存在文件## --filter : 使用filter筛选类## --test : 生成测试文件例子:

//有大小写规范

* Path: App\Http\Controller\AdminApi\User\Example 

php artisan admin:make-resource testExample --force --baseDir=Http --prefix=AdminApi --module=User\Example

* Path: App\Admin\Controller\User\Example

php artisan admin:make-resource testExample --force --filter --baseDir=Admin  --module=User\Example

Deployment自定义配置

GeneratorMakeResource.php

protected $types = [

    'model', 'request', 'resource', 'service', 'controller', 'test', 'migration'];
  • 选择需要生成的组件,filter和test默认不开启

  • 有先后顺序之分,需按照上图顺序填写

目录规则

protected $pathFormat = [

    'model'      => ['inBaseDir' => false, 'prefix' => ''],

    'service'    => ['inBaseDir' => false, 'prefix' => ''],

    'test'       => ['inBaseDir' => false, 'prefix' => true],

    'request'    => ['inBaseDir' => true, 'prefix' => true],

    'resource'   => ['inBaseDir' => true, 'prefix' => true],

    'controller' => ['inBaseDir' => true, 'prefix' => true],

    'migration'  => ['inBaseDir' => false, 'prefix' => ''],];
  • 在此修改各模块的路径规则设置,会影响各文件的命名空间和类名

  • inBaseDir决定是否在BaseDir内,默认Http

  • Installation
  • protected $createFilter = false;protected $baseFilterHelperPath = "Models\Traits\Filter";
  • config/app.php

/**

 * 手动配置

 * resource文件中不需要添加到 $fillable 的字段

 *

 * @var string[]

 */protected $resourceNoFillableFields = [

    'update_time',

    'updated_time',

    'delete_time',

    'deleted_time',];/**

 * 手动配置

 * model文件中不需要添加到 $fillable 的字段

 *

 * @var string[]

 */protected $modelNoFillableFields = [

    'id',

    'create_time',

    'created_time',

    'update_time',

    'updated_time',

    'delete_time',

    'deleted_time',];
필드를 채웁니다. 실행
  • 먼저 자신의 프레임워크 디렉터리 및 코드 형식에 따라 기본 코드 형식 스텁 파일을 수정하세요.

  • <?php
    
    namespace DummyNamespace;
    
    use NamespacedDummyModel;
    
    use NamespacedDummyRequest;
    
    use NamespacedDummyResource;
    
    use NamespacedDummyService;
    
    use BaseNamespaceResource\EmptyResource;
    
    use BaseNamespaceController\Controller;
    
    class DummyClass extends Controller
    
    {
    
        public function index(DummyRequest $request){
    
            $validated = $request->validated();
    
            $dummyModels = DummyModel::query()
    
                ->filter($validated)
    
                ->orderByDesc(&#39;id&#39;)
    
                ->paginate();
    
            return DummyResource::collection($dummyModels);
    
        }
    
        ···
    
    }
  • 배포 사용자 정의 구성

  • GeneratorMakeResource.php

  • rrreee

구성 요소를 선택하고, 필터 및 테스트는 기본적으로 활성화되어 있지 않습니다

순서가 있으므로 위에 표시된 순서대로 작성해야 합니다

  • 디렉터리 규칙

  • rrreee
  • 여기에서 각 모듈의 경로 규칙 설정을 수정하세요. 이는 각 파일 및 클래스 이름의 네임스페이스에 영향을 미칩니다.

inBaseDir은 BaseDir 내에 있는지 여부를 결정하고, 기본 Http

접두사는 보조 접두사

    내에 있는지 여부를 결정합니다.
  1. 필터 필터
🎜rrreee🎜🎜🎜default 설정하지 않고 생성된 필터 기본 클래스 경로의 예 🎜🎜🎜🎜: App/Models/Traits/Filter.php🎜🎜🎜🎜경로 생성은 inBaseDir 규칙만 따릅니다. $pathFormat에 모델을 지정하고 특성 생성을 피하기 위해 접두사를 따르지 않습니다.🎜 🎜🎜🎜🎜데이터베이스 필드 채우기🎜🎜rrreee🎜🎜코드 형식 기본 코드 형식을 수정합니다🎜🎜🎜🎜🎜각 스텁 구성을 참조하세요. 기본 형식을 사용자 정의하세요🎜🎜🎜🎜다음 스텁은 단순화된 코드 습관이므로 필요에 따라 수정하세요🎜🎜🎜 🎜Generatorstubs*.stub🎜rrreee🎜🎜🎜🎜TODO🎜🎜🎜🎜프런트 엔드는 구성 요소를 기반으로 생성됩니다🎜🎜

위 내용은 나만의 코드 생성 패키지 laravel-generator 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제