phphleb/draft

此包已被废弃且不再维护。未建议替代包。

HLEB 框架的草案类生成器

v1.0.5 2022-12-28 14:45 UTC

This package is auto-updated.

Last update: 2024-02-28 17:55:43 UTC


README

使用模板(“草案”)进行类生成器

这种方法与传统 DI(依赖注入) 不同,因为它不是在运行时程序化地注入依赖,而是在生成和更改类以根据设置进行之前注入。创建的类以文件形式存在;其正确性可以进行检查,依赖对于 IDE 来说是“可见”的,因此可以进行测试。

说明链接(RU)

草案实例是一个实验性技术,以及包括此库在内的 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

License: MIT PHP PHP PHP