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との事。