JSON、YAML、NEON等のテンプレートからPHPファイルを生成するオープンソースのCLIファイルジェネレーターエンジン・「MTRGen」

Ads

MTRGen

JSON、YAML、NEON等のテンプレートからPHPファイルを生成するオープンソースのCLIファイルジェネレーターエンジン・「MTRGen」
MTRGenはJSON、YAML、NEON等のテンプレートからPHPファイルを生成するオープンソースのCLIファイルジェネレーターエンジンです。

元となるテンプレートファイルを要件に合わせて設定すれば任意の内容でPHPファイルを生成できる、というもので、CLIとして提供されています。

任意の場所に変数(<% hogehoge %>) を追加して再利用可能なテンプレートを作成し、引数に基づいて動的に内容を変更可能となっています。例えば下記でいうとnamespaceやname等の変数を用意しています。

{
  "name": "StaticFactory",
  "filename": "staticfactory.mtr",
  "path": "app/<% namespace %>/factories",
  "file": {
    "strict": true,
    "namespace": {
      "name": "App\<% namespace %>",
      "class": {
        "name": "<% name %>StaticFactory",
        "methods": [
          {
            "name": "create<% name %>",
            "static": true,
            "visibility": "public",
            "return": "App\Email\<% name %>",
            "body": [
              "$<% name|lcfirst %> = new <% name %>();",
              "return $<% name|lcfirst %>;"
            ]
          }
        ]
      }
    }
  }
}

👇 このテンプレートを元に以下を代入すれば

'namespace' => 'Model\Entity'
'name' => 'EntityManager'

👇 以下のようなPHPファイルを生成できます。

<?php
                            
    declare(strict_types=1);
    
    namespace App\Model\Entity;
    
    class EntityManagerStaticFactory
    {
        public static function createEntityManager(): EntityManager
        {
            $entityManager = new EntityManager();
            return $entityManager;
        }
    }

ボイラープレート的なものだと考えて差し支えないと思います。

vendor/bin/mtrgen generate --path=templates/MyTemplate.json 'name=MyClass'

PHPファイルの生成はCLIで手軽に行えます。使い慣れれば楽かもしれません。よく使うコードをテンプレート化しておけば捗りそう。ライセンスはMITとの事。

MTRGenGithub