| Conditions | 10 |
| Paths | 1 |
| Total Lines | 116 |
| Code Lines | 37 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 54 | private function registerLocales(Container $container) |
||
| 55 | { |
||
| 56 | /** |
||
| 57 | * Instance of the Locales Configset. |
||
| 58 | * |
||
| 59 | * @param Container $container Pimple DI container. |
||
| 60 | * @return LocalesConfig |
||
| 61 | */ |
||
| 62 | $container['locales/config'] = function (Container $container) { |
||
| 63 | $appConfig = isset($container['config']) ? $container['config'] : []; |
||
| 64 | $localesConfig = isset($appConfig['locales']) ? $appConfig['locales'] : null; |
||
| 65 | return new LocalesConfig($localesConfig); |
||
| 66 | }; |
||
| 67 | |||
| 68 | /** |
||
| 69 | * Default language of the application, optionally the navigator's preferred language. |
||
| 70 | * |
||
| 71 | * @param Container $container Pimple DI container. |
||
| 72 | * @return string|null |
||
| 73 | */ |
||
| 74 | $container['locales/default-language'] = function (Container $container) { |
||
| 75 | $localesConfig = $container['locales/config']; |
||
| 76 | if (isset($localesConfig['auto_detect']) && $localesConfig['auto_detect']) { |
||
| 77 | if ($container['locales/browser-language'] !== null) { |
||
| 78 | return $container['locales/browser-language']; |
||
| 79 | } |
||
| 80 | } |
||
| 81 | return $localesConfig['default_language']; |
||
| 82 | }; |
||
| 83 | |||
| 84 | /** |
||
| 85 | * Accepted language from the navigator. |
||
| 86 | * |
||
| 87 | * Example with Accept-Language "zh-Hant-HK, fr-CH, fr;q=0.9, en;q=0.7": |
||
| 88 | * |
||
| 89 | * 1. zh-Hant-HK |
||
| 90 | * 2. fr-CH |
||
| 91 | * 3. fr |
||
| 92 | * 4. en |
||
| 93 | * |
||
| 94 | * @param Container $container Pimple DI container. |
||
| 95 | * @return string|null |
||
| 96 | */ |
||
| 97 | $container['locales/browser-language'] = function (Container $container) { |
||
| 98 | if (!isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { |
||
| 99 | return null; |
||
| 100 | } |
||
| 101 | |||
| 102 | /** |
||
| 103 | * Using data from configset instead of LocalesManager |
||
| 104 | * since the latter might need the browser language |
||
| 105 | * as the default language. |
||
| 106 | */ |
||
| 107 | $localesConfig = $container['locales/config']; |
||
| 108 | $supportedLocales = array_filter($localesConfig['languages'], function ($locale) { |
||
| 109 | return !(isset($locale['active']) && !$locale['active']); |
||
| 110 | }); |
||
| 111 | |||
| 112 | $acceptableLanguages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); |
||
| 113 | foreach ($acceptableLanguages as $acceptedLang) { |
||
| 114 | $lang = explode(';', $acceptedLang); |
||
| 115 | $lang = trim($lang[0]); |
||
| 116 | if (isset($supportedLocales[$lang])) { |
||
| 117 | return $lang; |
||
| 118 | } |
||
| 119 | } |
||
| 120 | |||
| 121 | return null; |
||
| 122 | }; |
||
| 123 | |||
| 124 | /** |
||
| 125 | * List of fallback language codes for the translator. |
||
| 126 | * |
||
| 127 | * @todo Use filtered "fallback_languages" from LocalesManager |
||
| 128 | * @param Container $container Pimple DI container. |
||
| 129 | * @return string[] |
||
| 130 | */ |
||
| 131 | $container['locales/fallback-languages'] = function (Container $container) { |
||
| 132 | $localesConfig = $container['locales/config']; |
||
| 133 | return $localesConfig['fallback_languages']; |
||
| 134 | }; |
||
| 135 | |||
| 136 | /** |
||
| 137 | * List of language codes (locale ident) from the available locales. |
||
| 138 | * |
||
| 139 | * @param Container $container Pimple DI container. |
||
| 140 | * @return string[] |
||
| 141 | */ |
||
| 142 | $container['locales/available-languages'] = function (Container $container) { |
||
| 143 | $manager = $container['locales/manager']; |
||
| 144 | return $manager->availableLocales(); |
||
| 145 | }; |
||
| 146 | |||
| 147 | /** |
||
| 148 | * List of available locales (as configuration structures) of the application. |
||
| 149 | * |
||
| 150 | * @param Container $container Pimple DI container. |
||
| 151 | * @return array |
||
| 152 | */ |
||
| 153 | $container['locales/languages'] = function (Container $container) { |
||
| 154 | $manager = $container['locales/manager']; |
||
| 155 | return $manager->locales(); |
||
| 156 | }; |
||
| 157 | |||
| 158 | /** |
||
| 159 | * Instance of the Locales Manager. |
||
| 160 | * |
||
| 161 | * @todo Filter "fallback_languages" |
||
| 162 | * @param Container $container Pimple DI container. |
||
| 163 | * @return LocalesManager |
||
| 164 | */ |
||
| 165 | $container['locales/manager'] = function (Container $container) { |
||
| 166 | $localesConfig = $container['locales/config']; |
||
| 167 | return new LocalesManager([ |
||
| 168 | 'locales' => $localesConfig['languages'], |
||
| 169 | 'default_language' => $container['locales/default-language'] |
||
| 170 | ]); |
||
| 373 |