ホームページ >PHPフレームワーク >Laravel >独自のコード生成パッケージを作成する 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];
独自のフレームワークに従ってデフォルトを変更してください最初にディレクトリとコード形式 コード形式スタブ ファイル
## 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";
デフォルトでは有効になっていません
#
/** * 手动配置 * 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('id') ->paginate(); return DummyResource::collection($dummyModels); } ··· }
##
以上が独自のコード生成パッケージを作成する laravel-generatorの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。