phphleb / draft
此包已被废弃且不再维护。未建议替代包。
HLEB 框架的草案类生成器
v1.0.5
2022-12-28 14:45 UTC
Requires
- php: >=7.3.0
- ext-readline: *
- phphleb/updater: *
README
使用模板(“草案”)进行类生成器
这种方法与传统 DI(依赖注入) 不同,因为它不是在运行时程序化地注入依赖,而是在生成和更改类以根据设置进行之前注入。创建的类以文件形式存在;其正确性可以进行检查,依赖对于 IDE 来说是“可见”的,因此可以进行测试。
草案实例是一个实验性技术,以及包括此库在内的 HLEB 框架中的一些其他技术。不适用于随意使用。如果需要,库可以单独连接(生成在 GeneratingTask 类中实现)。
安装
$ composer require phphleb/draft
部署
$ php console phphleb/draft --add
生成
生成类和更新自动加载器。每次更改设置或模板类时,都需要启动此命令。
$ php console drafts/generating-task --update-all $ composer dump-autoload
生成的类与开发者通常创建的类之间的唯一区别是,前者只能从“草案”或设置中进行编辑。
使用来自一个模板(“草案”)的设置,您可以创建大量用于不同任务的类似类。每个“草案”在内容上是任意的,将设置替换到其中的原则很简单,如下所示。
1
设置数组
return [ 'AClass' => [ 'TestDraftClass' => [ 'ActionName' => 'new \DateTime', 'Value' => '\'now\'', 'ReturnType' => '\DateTimeInterface', 'Description' => 'Demo A class' ] ], 'BClass' => [ 'TestDraftClass' => [ 'ActionName' => 'implode', 'Value' => '[100,500]', 'ReturnType' => 'string', 'Description' => 'Demo B class' ] ], ];
2
图纸模板类 TestDraftClass.php(默认替换设置为中性随机,以支持 IDE 中的语法高亮)
<?php /* *//**<-@Description*/ class TestDraftClass/**<-@ClassName*/ { private const VALUE = null/**<-@Value*/; public function get(): void/**<-@ReturnType*/ { return /**<-@ActionName*/(self::VALUE); } }
3
启动生成后,将获得两个工作类
<?php /* Demo A class */ class AClass { private const VALUE = 'now'; public function get(): \DateTimeInterface { return new \DateTime(self::VALUE); } }
<?php /* Demo B class */ class BClass { private const VALUE = [100,500]; public function get(): string { return implode(self::VALUE); } }
替换根据标记 /**<-@
...*/
进行,然后取标记左侧到间隔字符之前的值,并用类配置中的适当值替换所有这些。在创建自己的类-“草案”及其设置时,只需考虑此规则。
默认情况下,该库中创建了一些说明生成功能的示例(services.php 文件和包含“草案”的 DraftInstances 文件夹)。
切换到测试
允许您为整个项目重新分配来自另一个文件夹(带有存根)的类。
$ php console drafts/generating-task --update-all /app/Optional/tests/services.php $ composer dump-autoload
之后,您可以运行测试。
注意!仅适用于开发服务器。然后您需要切换回默认设置。
更新库
$ composer update phphleb/draft $ php console phphleb/draft --add $ php console drafts/generating-task --update-all $ composer dump-autoload