namespace Friendica\Core\PConfig\Factory;
use Friendica\Core\Config\Capability\IManageConfigValues;
+use Friendica\Core\Hooks\Capabilities\ICanCreateInstances;
use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
-use Friendica\Core\PConfig\Repository;
-use Friendica\Core\PConfig\Type;
-use Friendica\Core\PConfig\ValueObject;
class PConfig
{
- /**
- * @param IManageConfigValues $config The config
- * @param ValueObject\Cache $pConfigCache The personal config cache
- * @param Repository\PConfig $configRepo The configuration model
- *
- * @return IManagePersonalConfigValues
- */
- public function create(IManageConfigValues $config, ValueObject\Cache $pConfigCache, Repository\PConfig $configRepo): IManagePersonalConfigValues
+ public function create(ICanCreateInstances $instanceCreator, IManageConfigValues $config): IManagePersonalConfigValues
{
- if ($config->get('system', 'config_adapter') === 'preload') {
- $configuration = new Type\PreloadPConfig($pConfigCache, $configRepo);
- } else {
- $configuration = new Type\JitPConfig($pConfigCache, $configRepo);
- }
+ $strategy = $config->get('system', 'config_adapter');
- return $configuration;
+ /** @var IManagePersonalConfigValues */
+ return $instanceCreator->create(IManagePersonalConfigValues::class, $strategy);
}
}
use Friendica\Core\Cache;
use Friendica\Core\Logger\Type;
use Friendica\Core\KeyValueStorage;
+use Friendica\Core\PConfig;
use Psr\Log;
return [
KeyValueStorage\Capabilities\IManageKeyValuePairs::class => [
KeyValueStorage\Type\DBKeyValueStorage::class => ['database', ''],
],
+ PConfig\Capability\IManagePersonalConfigValues::class => [
+ PConfig\Type\JitPConfig::class => ['jit'],
+ PConfig\Type\PreloadPConfig::class => ['preload', ''],
+ ],
];