clntdev / scrubber
一个用于从数据库定义字段中清除数据的PHP包
Requires
- php: >=8.0
- fakerphp/faker: ^1.20
Requires (Dev)
- clntdev/coding-standards: ^1.0
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.7
- symfony/var-dumper: ^5.4
This package is auto-updated.
Last update: 2024-09-20 02:30:20 UTC
README
Scrubber是一个仅有一个依赖的最小PHP包,它允许你定义一个PHP配置文件,这有助于使用预定义或随机值更新数据库字段。当你需要一个生产数据库的副本进行工作并需要删除敏感内容时,这非常完美。
安装
通过运行以下命令安装composer: composer require clntdev/scrubber
用法
配置文件
此包依赖于一个有效的PHP配置文件以正确运行,该文件返回一个简单的数组,该数组映射了表、字段及其详细信息,以便它知道要使用哪个处理器。
处理器是从字段的给定值中检测到的。
- 如果希望使用替代列获取数据库记录,则字段可以定义
primary_key
,默认为id
。 - 如果希望覆盖检测到的处理器,则字段可以定义
handler
。 - 字段可以定义
type
,这可以用来定义字段为特定数据类型,如pid
(这对于GDPR目的很有用)(这在以下列出的方法中很有用)。
以下是一个用于单元测试的示例配置
<?php use ClntDev\Scrubber\Handlers\FakerHandler; return [ 'users' => [ 'first_name' => [ 'primary_key' => 'id', 'value' => 'faker.firstName', 'type' => 'pid', ], 'last_name' => [ 'value' => 'faker.lastName', 'type' => 'pid', ], 'email' => [ 'value' => 'faker.email', 'handler' => FakerHandler::class, 'type' => 'pid', ], 'toggle' => [ 'value' => static fn (): bool => true, ], ], 'composite_table' => [ 'composite_field' => [ 'primary_key' => ['entity_id', 'deleted', 'delta', 'langcode'], 'value' => 'string handler', ], ], ];
接口
此包实现了两个接口,需要创建类来实现这些接口,然后这些接口将被传递到主Scrubber
类中并使用。
数据库类
此类应实现ClntDev\Scrubber\Contracts\DatabaseUpdate
接口,该接口需要定义update
和fetch
方法。
定义fetch
方法以返回一个值数组,例如ID,使用给定的$table
和$primaryKey
变量从选择的数据源中获取它们。
定义update
方法以使用给定的$table
、$field
和$value
参数更新选择的数据源。
日志类
此类应实现ClntDev\Scrubber\Contracts\Logger
接口,该接口需要定义log
方法。
定义log
方法以记录在过程中抛出的任何异常消息到你的首选日志方法。
Scrubber类
一旦定义了配置文件并设置了上述类,现在要做的就是初始化Scrubber
类。这将允许运行数据库更新,并根据给定的类型列出字段。
ClntDev\Scrubber\Scrubber
类可以正常newed或提供一个静态的make
方法以使链调用更整洁。
$scrubber = Scrubber::make('/path/to/config.php', $databaseClass, $loggerClass)
传入配置文件的绝对路径、创建的数据库类和创建的日志类。
方法
run()
- 这是主要方法,将运行解析配置文件中的所有处理器,修改数据库。
getFieldList(string $type = 'pid')
- 此方法将返回给定类型的字段数组,默认为pid
。
getFieldListAsString(string $type = 'pid')
- 此方法将返回给定类型的字段逗号分隔字符串,默认为pid
。
内置处理器
- Faker - 使用 fakerphp/faker 库通过值输入(如
faker.firstName
)随机生成字符串 - 可调用 - 传递闭包或可调用类
- 对象 - 传递一个具有
handle
或__invoke
方法的对象 - 整数 - 如果是数值,将值输入转换为整数
- 字符串 - 将值输入转换为字符串