Maison >cadre php >Laravel >Créez votre propre package de génération de code laravel-generator

Créez votre propre package de génération de code laravel-generator

藏色散人
藏色散人avant
2020-09-28 13:28:272186parcourir
Ce qui suit est

Laravel La colonne tutoriel présentera le package de génération de code Laravel-Generator, j'espère qu'il sera utile aux amis dans le besoin !

Créez votre propre package de génération de code laravel-generator

Package de génération de code du générateur Laravel

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

Introduction

En raison de mon récent travail en arrière-plan, j'ai besoin d'un package de génération de code similaire à Gii, et il peut y en avoir plus abondant packages en ligne. Mais je n'en savais pas grand-chose, alors j'ai juste écrit un package qui me convenait à utiliser en fonction de mes propres habitudes. Je l'ai écrit à la hâte, donc le code peut être approximatif. Pour le moment, je n'ai écrit que le back-end, et j'écrirai le front-end quand j'aurai le temps.

1. Modifiez *.stub pour générer du code initial personnalisé en fonction du répertoire du framework personnalisé

2. Support

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

3. même nom Et remplissez les champs pour

>

composer require hogen\laravel-generator

php artisan vendor:publish --tag=generator
model + resource + migrationExécuter

Veuillez d'abord modifier le fichier stub du format de code par défaut en fonction de votre propre répertoire de framework et du format de code

'providers' => [

    ···    App\Console\Commands\Generator\GeneratorServiceProvider::class];
    Configuration personnalisée du déploiement

GeneratorMakeResource.php

## 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
  • Sélectionnez les composants à être généré, le filtre et le test ne sont pas activés par défaut

Il y a une priorité, vous devez remplir la commande selon l'image ci-dessus

Règles de répertoire

    protected $types = [
    
        'model', 'request', 'resource', 'service', 'controller', 'test', 'migration'];
  • Modifiez ici les paramètres des règles de chemin de chaque module, ce qui affectera l'espace de noms et le nom de classe de chaque fichier
  • inBaseDir détermine s'il se trouve dans BaseDir, la valeur par défaut est
  • prefix détermine s'il se trouve dans le préfixe secondaire

    • Filtre de filtre
    • 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' => ''],];

      Http

      Non activé par défaut
    • Exemple de chemin de la classe de base de filtre générée : App/ Models/Traits/Filter.php

    La génération du chemin suit uniquement La règle inBaseDir du modèle dans $pathFormat ne suit pas le préfixe pour éviter la génération de traits

    • Remplissage des champs de la base de données

    protected $createFilter = false;protected $baseFilterHelperPath = "Models\Traits\Filter";
  • Format du code Modifier le format du code par défaut

  • Se référer à chaque stub configuration pour personnaliser le format par défaut
  • Les stubs suivants sont des habitudes de code simplifiées, selon les besoins Modifier

    Generatorstubs*.stub

    /**
    
     * 手动配置
    
     * 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',];
    • TODO

    • Le front-end est généré en fonction des composants

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer