mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/15699] Lazy-load adapters
PHPBB3-15699
This commit is contained in:
parent
2c9f9fa75e
commit
64e8bea62a
1 changed files with 38 additions and 24 deletions
|
@ -622,41 +622,55 @@ class acp_storage
|
||||||
|
|
||||||
protected function get_current_adapter($storage_name)
|
protected function get_current_adapter($storage_name)
|
||||||
{
|
{
|
||||||
$provider = $this->get_current_provider($storage_name);
|
static $adapters = [];
|
||||||
$provider_class = $this->provider_collection->get_by_class($provider);
|
|
||||||
|
|
||||||
$adapter = $this->adapter_collection->get_by_class($provider_class->get_adapter_class());
|
if(!isset($adapters[$storage_name]))
|
||||||
$definitions = $this->get_provider_options($provider);
|
|
||||||
|
|
||||||
$options = [];
|
|
||||||
foreach (array_keys($definitions) as $definition)
|
|
||||||
{
|
{
|
||||||
$options[$definition] = $this->get_current_definition($storage_name, $definition);
|
$provider = $this->get_current_provider($storage_name);
|
||||||
|
$provider_class = $this->provider_collection->get_by_class($provider);
|
||||||
|
|
||||||
|
$adapter = $this->adapter_collection->get_by_class($provider_class->get_adapter_class());
|
||||||
|
$definitions = $this->get_provider_options($provider);
|
||||||
|
|
||||||
|
$options = [];
|
||||||
|
foreach (array_keys($definitions) as $definition)
|
||||||
|
{
|
||||||
|
$options[$definition] = $this->get_current_definition($storage_name, $definition);
|
||||||
|
}
|
||||||
|
|
||||||
|
$adapter->configure($options);
|
||||||
|
//$adapter->set_storage($storage_name);
|
||||||
|
|
||||||
|
$adapters[$storage_name] = $adapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
$adapter->configure($options);
|
return $adapters[$storage_name];
|
||||||
$adapter->set_storage($storage_name);
|
|
||||||
|
|
||||||
return $adapter;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function get_new_adapter($storage_name)
|
protected function get_new_adapter($storage_name)
|
||||||
{
|
{
|
||||||
$provider = $this->state['storages'][$storage_name]['provider'];
|
static $adapters = [];
|
||||||
$provider_class = $this->provider_collection->get_by_class($provider);
|
|
||||||
|
|
||||||
$adapter = $this->adapter_collection->get_by_class($provider_class->get_adapter_class());
|
if(!isset($adapters[$storage_name]))
|
||||||
$definitions = $this->get_provider_options($provider);
|
|
||||||
|
|
||||||
$options = [];
|
|
||||||
foreach (array_keys($definitions) as $definition)
|
|
||||||
{
|
{
|
||||||
$options[$definition] = $this->state['storages'][$storage_name]['config'][$definition];
|
$provider = $this->state['storages'][$storage_name]['provider'];
|
||||||
|
$provider_class = $this->provider_collection->get_by_class($provider);
|
||||||
|
|
||||||
|
$adapter = $this->adapter_collection->get_by_class($provider_class->get_adapter_class());
|
||||||
|
$definitions = $this->get_provider_options($provider);
|
||||||
|
|
||||||
|
$options = [];
|
||||||
|
foreach (array_keys($definitions) as $definition)
|
||||||
|
{
|
||||||
|
$options[$definition] = $this->state['storages'][$storage_name]['config'][$definition];
|
||||||
|
}
|
||||||
|
|
||||||
|
$adapter->configure($options);
|
||||||
|
//$adapter->set_storage($storage_name);
|
||||||
|
|
||||||
|
$adapters[$storage_name] = $adapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
$adapter->configure($options);
|
return $adapters[$storage_name];
|
||||||
$adapter->set_storage($storage_name);
|
|
||||||
|
|
||||||
return $adapter;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue