ホームページ >PHPフレームワーク >Laravel >独自のコード生成パッケージを作成する laravel-generator

独自のコード生成パッケージを作成する laravel-generator

藏色散人
藏色散人転載
2020-09-28 13:28:272172ブラウズ

次のチュートリアルこのコラムでは、コード生成パッケージ laravel-generator について紹介します。

独自のコード生成パッケージを作成する laravel-generator

Laravel ジェネレーター コード生成パッケージ

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

はじめに

最近バックエンドで作業しているため、Gii に似たコード生成パッケージが必要です。他にもあるかもしれません。インターネット上には豊富なパッケージがありますが、あまり知識がなかったので、自分の癖で使いやすいパッケージを書いただけで、急いで書いたのでコードが荒いかもしれません。まだバックエンドしか書いていないので、時間ができたらフロントエンドも書きたいと思います。 1. *.stub を変更して、カスタム フレームワーク ディレクトリに基づいてカスタマイズされた初期コードを生成します

2.

モデル フィルター要求リソース サービス コントローラー移行テストのサポート

3. 同じ名前のデータ テーブルを自動的に読み取り、モデル リソースの移行


インストール

のフィールドに入力します。

composer require hogen\laravel-generator

php artisan vendor:publish --tag=generator
config/app.php

'providers' => [

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

独自のフレームワークに従ってデフォルトを変更してください最初にディレクトリとコード形式 コード形式スタブ ファイル

## 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
  • デプロイメント カスタム構成

Generator\MakeResource.php

protected $types = [

    'model', 'request', 'resource', 'service', 'controller', 'test', 'migration'];

生成する必要があるコンポーネントを選択してください。フィルタとテストはデフォルトでは有効になっていません。

  • シーケンスがあります。順序を記入する必要があります。上の図によると

  • ディレクトリ ルール
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
  • # です#prefix はセカンダリ プレフィックス内にあるかどうかを決定します

  • フィルター filter

protected $createFilter = false;protected $baseFilterHelperPath = "Models\Traits\Filter";

デフォルトでは有効になっていません

  • 生成されたフィルター基本クラスのパスの例: App/Models/Traits/Filter.php

  • パスの生成はモデルの inBaseDir ルールのみに従います。 $pathFormat にあり、個々の特性の生成を避けるためにプレフィックスに従いません

  • #データベース フィールドの充填

    #

    /**
    
     * 手动配置
    
     * 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',];
  • コード形式デフォルトのコード形式を変更する

デフォルト形式をカスタマイズするには、各スタブ構成を参照してください。

次のスタブは、簡略化されたコード習慣です。 、必要に応じて変更します
  • Generator\stubs\*.stub

    <?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);
    
        }
    
        ···
    
    }
  • TODO

フロントエンドはコンポーネントに基づいて生成されます

##

以上が独自のコード生成パッケージを作成する laravel-generatorの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。