dezer/fake-generator-data-transfer-object

自动生成数据传输对象的假数据

v0.0.8 2021-11-18 07:26 UTC

This package is auto-updated.

Last update: 2024-09-29 06:03:06 UTC


README

dto 假数据生成器 - 一劳永逸,不再为数据和用户烦恼。

bin/console mock:dto:make Client
^ Dto\Client^ {#141
  +passport: Dto\Passport^ {#143
    +series: "8301"
    +number: "024729"
    +issue_date: DateTime @999300505 {#146
      date: 2001-08-31 23:28:25.0 UTC (+00:00)
    }
    #ignoreMissing: false
    #exceptKeys: []
    #onlyKeys: []
  }
  +phone: "+7 (984) 637-01-62"
  +email: "elvira46@drozdov.ru"
  +registration_address: "061181, Мурманская область, город Клин, пер. Бухарестская, 48"
  +birth_date: DateTime @252504479 {#145
    date: 1978-01-01 12:07:59.0 UTC (+00:00)
  }
  +last_name: "Фадеев"
  +middle_name: "Владимировна"
  +first_name: "Артемий"
  #ignoreMissing: false
  #exceptKeys: []
  #onlyKeys: []
}

客户端 - dto 相对于 namespace 的名称 ...Dto\,并且通过注解进行描述。

根据变量类型/注解描述生成相应的假 dto。

如果需要为特定的 dto 变量指定具体规则,例如客户的全名(保证不是一串字母),则需要在变量上方添加注解 @FakeGenerator 并指定参数 firstName。

    /** @FakeGenerator lastName */
    public string $last_name;
    /** @FakeGenerator middleName */
    public string $middle_name;
    /** @FakeGenerator firstName */
    public string $first_name;

或者例如护照签发日期不能早于 18 岁生日。

    /** @FakeGenerator dateTimeBetween ("-30 years", "-19 years") */
    public DateTimeInterface $issue_date;

或者按照 dto,电话号码是字符串类型,但实际上

    /** @FakeGenerator numerify ("+7 (9##) ###-##-##") */
    public string $phone;

或者按类型 string,实际上这是一串用于正则表达式的字符串。

    /** @FakeGenerator regexify ("[0-9]{4}") */
    public string $series;
    /** @FakeGenerator regexify ("[0-9]{6}") */
    public string $number;

注解的使用语法如下

    /** @FakeGenerator %Faker\Generator->methodName% ("%param1%", "%param2%") */
    /** @FakeCollection %Name\Space\To\Dto% */

其中

  1. %Faker\Generator->methodName% - Faker\Generator 类中的方法名称
  2. %param1%, %param2%, ..., %paramN% - 此方法的参数
  3. %Name\Space\To\Dto% - 类的 namespace 和类名,例如:Dezer\FakeGeneratorDataTransferObject\ClassDto

注意:参数之间的分隔符 ", " 是必需的,且在描述中应避免使用。