mhuber84 / randomizer
这是一个TYPO3扩展。它可以在数据库中或在导出过程中随机化内容。它是对fzaninotto/faker的包装。
Requires
- fakerphp/faker: ^1.23
- typo3/cms-core: ^11.1||^12.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.41
- typo3/coding-standards: ^0.6||^0.7
- typo3/tailor: ^1.5
- typo3/testing-framework: ^7.0||^8.0
Replaces
- typo3-ter/randomizer: 3.5.0
This package is auto-updated.
Last update: 2024-09-18 15:18:31 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请求或创建一个问题。