mhuber84/randomizer

这是一个TYPO3扩展。它可以在数据库中或在导出过程中随机化内容。它是对fzaninotto/faker的包装。

安装次数: 17,076

依赖项: 0

建议者: 0

安全: 0

星标: 1

分支: 0

类型:typo3-cms-extension

3.5.0 2023-12-18 13:48 UTC

README

这是一个TYPO3扩展。它可以在数据库中随机化内容。它是对fakerphp/faker的包装。

它做什么?

使用此扩展,您可以在数据库表或数据库导出过程中随机化内容。

它对于开发系统上的数据匿名化非常有用。随机值是通过fakerphp/faker包生成的。

在数据库中随机化

如果配置表中配置的字段有值,则该值将被随机生成的值覆盖。空字段将被忽略。

在导出过程中随机化

如果配置表中配置的字段有值,则该值将被随机生成的值覆盖。默认情况下,仅导出配置的表。但您也可以导出整个数据库。

安装

使用composer安装扩展:composer req mhuber84/randomizer。如果您想使用导出功能,必须在生产环境中安装它。否则,您可以将选项--dev添加到仅安装到开发系统。它应与TYPO3 8.6、9.5和10.4兼容。

配置

在您的站点包ext_localconf.php中配置表和字段,或者AdditionalConfiguration.php。

这是fe_users表的示例配置。可用的faker提供程序/格式化程序列表在https://fakerphp.github.io/formatters/上。一个额外的数组faker提供程序是\Mhuber84\Randomizer\FakerProviders\ArrayProvider。它可以返回序列化和json数组。在示例中用于字段'uc'。

您要随机化的表必须有一个名为"uid"的唯一列名!

$randomizerSettings = $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['randomizer'];

// Database fields to formatter mapping. https://fakerphp.github.io/formatters/
$randomizerSettings['faker.']['mapping.']['fe_users.'] = [
    //TYPO3 Core fields
    'username' => 'userName',
    'password' => 'password',
    'address' => 'streetAddress',
    'telephone' => 'phoneNumber',
    'fax' => 'phoneNumber',
    'email' => 'safeEmail',
    'uc' => 'serialized',
    'zip' => 'postcode',
    'city' => 'city',
    'country' => 'countryCode',
    'www' => 'url',
    'company' => 'company',
    //'image' => '', //TODO
    'first_name' => 'firstName',
    'last_name' => 'lastName',
    'middle_name' => 'firstName',
    'felogin_forgotHash' => 'md5',
];

// List of unique fields. Fields have to be defined in the mapping, too! https://fakerphp.github.io/#modifiers
$randomizerSettings['faker.']['unique.']['fe_users.'] = [
    //TYPO3 Core fields
    'username' => true,
];

// Locale for generated values. https://fakerphp.github.io/#localization
$randomizerSettings['faker.']['locale'] = 'de_DE';

// List of equal fields.
// This has nothing to do with faker, but is useful for fe_users table if username and email are synchronized.
$randomizerSettings['equal.']['fe_users.'] = [
    // The field 'email' gets the value of field 'username'.
    'email' => 'username',
];

$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['randomizer'] = $randomizerSettings;

用法

在数据库中随机化

注意:默认情况下,数据库更改不会写入数据库!如果您确实想随机化数据库中的值,请添加--no-dry-run选项。

运行cli命令

vendor/bin/typo3cms randomizer:randomize

运行vendor/bin/typo3cms randomizer:randomize -h以查看所有选项。

在导出过程中随机化

运行cli命令

vendor/bin/typo3cms randomizer:export mydatabase.sql

运行vendor/bin/typo3cms randomizer:export -h以查看所有选项。

自定义faker提供程序

在您的ext_localconf.php中注册您的提供程序

$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['randomizer']['faker.']['providers.']['myProvider'] = \Vendor\Namespace\To\MyProvider::class;

根据\Faker\Provider\Base编写您的提供程序。在\Mhuber84\Randomizer\FakerProviders\ExampleProvider\Mhuber84\Randomizer\FakerProviders\ArrayProvider中有一个示例。有关自定义提供程序的信息,请参阅https://github.com/fzaninotto/Faker#faker-internals-understanding-providers

开发

开发使用ddev进行。

功能测试

有两个功能测试用于两个命令。您可以使用以下命令运行它们:

ddev functional-tests "^11" "7.4"
ddev functional-tests "^11" "8.1"
ddev functional-tests "^12" "8.1"
ddev functional-tests "^11" "8.2"
ddev functional-tests "^12" "8.2"

代码质量

PHP CS Fixer:ddev exec .Build/bin/php-cs-fixer fix

致谢

非常感谢François Zaninotto和他的包fzaninotto/faker

还要感谢https://github.com/orgs/FakerPHP/people,他们fork了原始包,并在原始包存档后维护了它。存档

非常感谢Georg Ringer及其软件包georgringer/gdpr为此软件包带来的灵感!

作者

Marco Huber@mhuber84,邮箱:mail@marco-huber.de

欢迎贡献并提交pull请求或创建一个问题。