becklyn / ddd-generator-bundle
Becklyn DDD 框架中常见领域驱动设计模式的代码生成器。
Requires
- ext-json: *
- symfony/maker-bundle: ^1.21
- symfony/process: ^5.1|^6.0
Requires (Dev)
- php: >=8.0
- becklyn/ddd-core: ^2.0
- doctrine/orm: ^2.8
- phpspec/prophecy: ^1.12
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-master
- symfony/config: ^5.1|^6.0
- symfony/console: ^5.1|^6.0
- symfony/dependency-injection: ^5.1|^6.0
- symfony/filesystem: ^5.1|^6.0
- symfony/finder: ^5.1|^6.0
- symfony/phpunit-bridge: ^5.1|^6.0
- symfony/yaml: ^5.1|^6.0
README
请确保全局安装了 Composer,如 Composer 文档中的安装章节所述。
使用 Symfony Flex 的应用程序
打开命令行控制台,进入您的项目目录并执行
composer require becklyn/ddd-generator-bundle --dev
未使用 Symfony Flex 的应用程序
步骤 1:下载 Bundle
打开命令行控制台,进入您的项目目录,并执行以下命令以下载此 Bundle 的最新稳定版本
composer require becklyn/ddd-generator-bundle --dev
步骤 2:启用 Bundle
然后,通过将其添加到项目 config/bundles.php
文件中注册的 Bundle 列表中来启用该 Bundle
// config/bundles.php return [ // ... Becklyn\DddGeneratorBundle\BecklynDddGeneratorBundle::class => ['dev' => true], ];
创建自己的 Generator/Maker
如果您想根据 DddMaker 创建自己的 Generator,则需要扩展抽象 Maker 类之一。
除非您能确保其实现永远不会改变,否则请不要扩展非抽象类。
如果您无法确保这一点,最好使用以下之一
-
DddMaker:最通用的抽象。它只提供功能,没有基础实现。
-
DddEntityMaker:这是实现基于一些输入选项的生成器的最简单方式。实际上,此 Bundle 的大多数生成器都使用 DddEntityMaker。
-
DddEntityTestMaker:专门用于生成测试文件的 DddEntityMaker。
-
DddEntityCommandMaker:专门用于生成 Command 和 CommandHandler 类的 DddEntityMaker。
要生成自己的 Generator,您需要创建一个扩展 src/Maker
中的 Maker 的类,并创建一个模板文件。
模板文件可以放置在 res/skeleton/ddd
或 src/Resources/skeleton/ddd
中,并使用文件扩展名 .tpl.php
。如果您无法放置模板文件在那里,您也可以覆盖 Makers 的 getTemplatePath()
。
有关创建模板的更多信息,请参阅模板部分。
最后,您需要在服务配置文件中将您的 Maker 注册为 Maker。
这是通过向服务提供 maker.command
标签来完成的。
关于 i18n 的一些话
如果您想使用本地化功能,应使用 getExtraVariables()
方法提供它,并在模板中使用 $extra
。
或者,您可以覆盖 internationalize()
方法,但您需要提供包内部定义的任何键,以继续使用预定义的功能。因为这些键在每次补丁版本之间都可能发生变化,所以确保没有功能损坏可能非常困难。
模板
模板文件本身是纯文本文件,使用以下方式注入 PHP 变量
<?= $variableName; ?>
.
如果您使用的是 DddEntityMaker
或扩展它的类,可以使用以下变量
-
$domain_namespace
:域的子命名空间。例如,在这个命名空间\App\Authorization\Domain\Foo
中,Foo
将是子命名空间。这也可以是多级的,例如Foo\Bar
-
$entity
:应生成的实体的名称。例如,`User` -
$domain
:应创建所有内容的域的名称。例如,`Authorization` -
$psr4Root
:由 Composer 定义的 PSR-4 Root 名称。 -
$i18n
:一个国际化字符串数组。可用的键存储在位于src/Resources/i18n
的 yaml 文件中。此数组仅应用于内部标记,例如如果您想为此包提交一个 Pull Request。请参阅国际化部分。 -
$version
:当前日期,格式为YYYY-MM-DD
。这用于自动生成 PHP 文档注释。 -
$author
:当前 git 用户,格式为USERNAME <EMAIL>
,或者如果无法读取 git 用户,则为Code Generator <PROJECT NAME>
。 -
$extra
:一个可以用来提供所需任何信息的数组。
注意:如果您重写了 getExtraVariables()
方法,请确保将您的数组与 super()
的数组合并,以确保不会出错。