Re: PHP 8.2 proposal: "match", allow "default" as conditional_expression, e.g. 'en_US', 'en_GB', default => loadDefaults()
| From: | Andreas | Date: | Mon, 22 Nov 2021 22:04:07 +0000 |
| Subject: | Re: PHP 8.2 proposal: "match", allow "default" as conditional_expression, e.g. 'en_US', 'en_GB', default => loadDefaults() | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-116482@lists.php.net to get a copy of this message | ||
On 22.11.21 22:06, Nikita Popov wrote:
On Mon, Nov 22, 2021 at 7:18 PM Andreas <syntheme@gmx.de> wrote:Hi Nikita, nice to meet you. Yes, that's indeed possible. But I personally like to list all handled conditional_expressions (here the $locales) in the match in order to directly see in the code for later reference, which of them are explicit handled (and which are handled by the default pattern). This proposal is mainly syntactic sugar to avoid code duplication, in this case the duplicate return_expression loadDefaultLanguageSettings(). Just as a side note: PHPStorm's inspection suggests "Merge with default arm" every time because of this code duplication. Regards, AndreasHi internals,This is a proposal to allow to append thedefaultpattern by comma to the end of the last match branch. (Like a conditional_expression)This allows to re-use the return_expression if required and avoids code duplication.PROPOSAL: PHP 8.2<?php return match ($locale) { 'de_DE', 'de_CH', 'de_AT' => loadGermanLanguageSettings(), 'en_US', 'en_GB', default => loadDefaultLanguageSettings(), }; ?>Isn't this equivalent to just this? <?php return match ($locale) {'de_DE', 'de_CH', 'de_AT' => loadGermanLanguageSettings(), default => loadDefaultLanguageSettings(),}; 'en_US' and 'en_GB' will already go to the default branch if they're not listed explicitly. Regards, Nikita