-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Probirali jsme to spolu dnes s @lukaspijak v kancelari a to reseni se ti libilo. Zkusim to tady nastinit:
Mame kod, ktery se snazi nacist nejaky klic (main:dispatcher) a v pripade ze je hodnota null tak v miste volani se rozhodneme jakou hodnotu pouzijeme misto teto prazdne hodnoty. Problem je v tom, ze takovych mist muze byt v aplikaci hned nekolik a je pomerne slozite udrzet vse konzistentni.
// woosms - src/Template/Basic.php
$plugin_settings = [
'dispatcher' => $settings->load('main:dispatcher') ?? Dispatcher::$default_dispatcher,
'synchronization' => $settings->load('main:synchronization') ?? 'all',
'language' => $settings->load('main:language') ?? 'en',
'language_mutation' => $settings->load('main:language_mutation') ?? false,
'delete_db' => $settings->load('main:delete_db') ?? false,
'address_preference' => $settings->load('main:address_preference') ?? 'delivery',
'marketing_message_opt_in_enabled' => $settings->load('main:marketing_message_opt_in_enabled') ?? OrderForm::DefaultEnabled,
'marketing_message_opt_in_label' => $settings->load('main:marketing_message_opt_in_label') ?? '',
'marketing_message_opt_in_default' => $settings->load('main:marketing_message_opt_in_default') ?? false,
'marketing_message_opt_in_url' => $settings->load('main:marketing_message_opt_in_url') ?? '',
];
// woosms - src/Event/AssetDispatcher.php
if (($settings->load('main:dispatcher') ?? Dispatcher::$default_dispatcher) === Dispatcher::Asset){/**/}Solution
Nechme primo tridu BulkGate\Plugin\Settings\Settings resit defaultni hodnoty. Potom uz nemusime resit, kde vsude osetrit prazdnou hodnotu.
// src/Settings/Settings.php
public function __construct(Repository\Settings $repository, array $default_settings)
{
$this->repository = $repository;
$this->default_settings = $default_settings;
}V DI by to potom mohlo vypadat nejak nasledovne:
$container['localization.language'] = ['factory' => Settings\Settings::class, 'parameters' => ['default_settings' => [
'main:dispatcher' => 'asset',
'main:synchronization' => 'all',
/*...*/
]]];Nove uz by tedy vystup vypadal nasledovne:
$settings->load('main:dispatcher'); //asset
$settings->load('main:synchronization'); //allMetadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request