sholokhov / bitrix-option
1.0.3
2024-08-29 16:53 UTC
Requires
- php: ^8.2
This package is auto-updated.
Last update: 2024-09-29 16:58:14 UTC
README
安装
composer require sholokhov/bitrix-option
要求
描述
允许通过 DTO 与模块参数进行交互。与 b_option_site 表交互
初始化和配置
初始化参数管理器
use Sholokhov\BitrixOption\Manager;
$manager = new Manager($configuration);
配置
为了配置,需要指定以下值如果未指定或格式不正确的必需参数,则将引发异常
$configuration = [
'module' => 'my_module',
'name' => 'connection',
'siteID' => 's1',
'storage' => $object
];
存储库
存储库必须实现 `` Sholokhov\BitrixOption\StorageInterface `` 接口。存储库结构示例
use Sholokhov\BitrixOption\StorageInterface;
class ConnectionDTO implements StorageInterface
{
public int $port;
public string $host;
public string $login;
public function __toString(): string
{
return $this->toString();
}
public function toString(): string
{
return json_encode([
'port' => $this->port,
'host' => $this->host,
'login' => $this->login
]);
}
public static function fromString(string $value): self
{
$data = json_decode($value, JSON_OBJECT_AS_ARRAY);
$connection = new self();
$connection->port = intval($data['port'] ?? 22);
$connection->host = (string)($data['host'] ?? '');
$connection->login = (string)($data['login'] ?? '');
return $connection;
}
}
获取模块参数
use Sholokhov\BitrixOption\Manager;
$configuration = [
'module' => 'sms.sender',
'name' => 'connection',
'siteID' => 's5',
'storage' => ConnectionDTO::class
];
$manager = new Manager($configuration);
$connection = $manager->get();
保存参数
保存方法始终返回 Bitrix\Main\Result
对象。
如果在保存过程中出现异常,则结果对象的 $result->isSuccess()
方法将返回假,并提供获取错误文本的机会。
$result = $manager->save();
if (!$result->isSuccess()) {
your code ...
}
同步参数
如果需要更新参数值,可以使用该方法$storage = $manager->load();
注意
如果存在未保存的值状态,则数据将丢失。加载的结果将是新对象 - 与旧资源(对象)的连接将被断开。
$manager = new Manager($configuration);
$storage = $manager->get();
$storage->host = 'localhost';
$manager->laod();
// Сохранится пустое значение, т.к. связь с $storage разорвана
$manager->save();
删除参数
```injectablephp $manager->remove(); ```基于对象初始化
可以根据对象初始化配置管理器。对象必须描述 `` Sholokhov\BitrixOption\Attributes\Option `` 属性属性描述示例
use Sholokhov\BitrixOption\Attributes\Option;
#[Option(module: 'sms.sender', name: 'connection', storage: ConnectionDTO::class)]
class Connection
{
...
}
对象初始化
use Sholokhov\BitrixOption\AttributeManager;
// Способ 1
$manager = new AttributeManager(Connection::class);
$storage = $manager->get();
// Способ 2
$manager = new AttributeManager(new Connection(), 's1');
$storage = $manager->get();
配置收集器
是简单对象初始化的包装。用于简化代码和抽象初始化对象的逻辑基于数组的配置器初始化
use Sholokhov\BitrixOption\Manager;
use Sholokhov\BitrixOption\Builder\Loader;
$config = [
'module' => 'sms.sender',
'name' => 'connection',
'siteID' => 's5',
'storage' => ConnectionDTO::class
];
$manager = new Manager($configuration);
// Аналог
$manager = Loader::load($config);
基于对象初始化
use Sholokhov\BitrixOption\AttributeManager;
use Sholokhov\BitrixOption\Builder\Loader;
$manager = new AttributeManager(Connection::class);
// Аналог
$manager = Loader::loadByEntity(Connection::class);