flagception / database-activator
数据库管理的功能开关激活器
1.1.4
2023-11-29 21:05 UTC
Requires
- php: ^7.1.3 || ^8.0
- doctrine/dbal: ^2.12 | ^3.0
- flagception/flagception: ^1.7
- symfony/options-resolver: >=2.7
Requires (Dev)
- ext-pdo: *
- phing/phing: ^2.16
- php-coveralls/php-coveralls: ^v2.4
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
- symfony/phpunit-bridge: ^5.2
This package is auto-updated.
Last update: 2024-08-30 00:06:10 UTC
README
使用SQL数据库(mysql, postgres, sqlite, ...)来管理Flagception的功能开关!
下载库
打开命令行控制台,进入您的项目目录,并执行以下命令以下载此库的最新稳定版本:
$ composer require flagception/database-activator
用法
只需创建一个新的DatabaseActivator
实例并将其提交到您的功能管理器。
// YourClass.php
class YourClass
{
public function run()
{
$activator = new DatabaseActivator(['url' => 'mysql://user:secret@localhost/mydb']);
$manager = new FeatureManager($activator);
if ($manager->isActive('your_feature_name')) {
// do something
}
}
}
连接
此激活器在底层使用dbal。我们将第一个参数直接传递给dbal,因此您可以使用所有已知的连接选项(参见文档)
用户名和密码
// YourClass.php
class YourClass
{
public function run()
{
$activator = new DatabaseActivator([
'dbname' => 'mydb',
'user' => 'user',
'password' => 'secret',
'host' => 'localhost',
'driver' => 'pdo_mysql'
]);
// ...
}
}
连接字符串
// YourClass.php
class YourClass
{
public function run()
{
$activator = new DatabaseActivator([
'url' => 'mysql://user:secret@localhost/mydb'
]);
// ...
}
}
PDO实例
// YourClass.php
class YourClass
{
public function run()
{
$activator = new DatabaseActivator([
'pdo' => $this->myPdoInstance
]);
// ...
}
}
DBAL实例
// YourClass.php
class YourClass
{
public function run()
{
$activator = new DatabaseActivator($this->myDbalInstance);
// ...
}
}
表
如果表不存在,激活器将创建SQL表。默认表名为flagception_features
,其中包含feature
和state
列。您可以通过第二个参数更改表和列名。它期望一个包含值为db_table
、db_column_feature
和db_column_state
的数组。设置其中一个字段是可选的。
示例
// YourClass.php
class YourClass
{
public function run()
{
$activator = new DatabaseActivator(['url' => 'mysql://user:secret@localhost/mydb'], [
'db_table' => 'my_feature_table',
'db_column_feature' => 'foo_feature_name',
'db_column_state' => 'foo_is_active'
]);
// The activator create a table 'my_feature_table' with the column 'foo_feature_name' and 'foo_is_active'.
$manager = new FeatureManager($activator);
if ($manager->isActive('your_feature_name')) {
// do something
}
}
}