PHP optimisation Spécifique pour s'en boucle dans Symfony

0

La question

Dans Symfony application, j'ai besoin d'utiliser le commutateur/cas de la fonction, mais les paramètres de la demande empêche moi, et j'utilise un uggly si la condition comme :

        $roles = ["ROLE_USER"];

        if ($request->get('isAdmin')) {
            array_push($roles, "ROLE_ADMIN");
        }

        if ($request->get('isFreemium')) {
            array_push($roles, "ROLE_FREEMIUM");
        }

        if ($request->get('isPremium')) {
            array_push($roles, "ROLE_PREMIUM");
        }

        if ($request->get('isExternal')) {
            array_push($roles, "ROLE_EXTERNAL");
        }

        if ($request->get('isVip')) {
            array_push($roles, "ROLE_VIP");
        }

Pouvez-vous m'aider à simplifier ?

if-statement loops php switch-statement
2021-11-23 21:07:21
1

La meilleure réponse

1

Vous pouvez essayer ce qui suit.

$definedRoles = new ArrayObject([
    'Admin',
    'Freemium',
    'Premium',
    'External',
    'Vip',
]);

$roles = new ArrayObject([ 'ROLE_USER' ]);

foreach ($definedRoles as $role) {
    if ($request->get('is' . $role)) {
        $roles->append(strtoupper('role_' . $role));
    }
}

Pourquoi je m en utilisant l' ArrayObject de classe? Parce qu'il fonctionne comme un rendement déjà. Contrairement à un tableau, l'objet occupe de la mémoire uniquement pour l'entrée en cours lors de l'itération. Ainsi, votre boucle occupe peu de mémoire et que vous ne charge pas toutes les entrées dans la mémoire.

Mettez tous vos valide rôles dans le premier tableau $definedRoles. Tous les rôles seront répétées et une condition if va vérifier, si il 's dans la $request objet. Si oui, le rôle sera ajouté à l' $roles tableau.

2021-11-23 21:36:26

Juste être conscient que $request->get est supprimée de la version 5.4 et ne devrait plus être utilisée. symfony.com/blog/...
Cerad

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................