PHP optimización Específica para si bucle en Symfony

0

Pregunta

En Symfony app, tengo que usar el interruptor/el caso de la función, pero los parámetros de solicitud impide a mí, y yo uso un uggly si la condición como :

        $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");
        }

Me pueden ayudar a simplificar ?

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

Mejor respuesta

1

Usted puede intentar el siguiente.

$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));
    }
}

Por qué me 'm usando el ArrayObject la clase? Debido a que funciona como un rendimiento ya. A diferencia de una matriz, el objeto que ocupa la memoria sólo para la entrada actual cuando iterada. Por lo tanto el bucle ocupa poca memoria y no carga todas las entradas en la memoria.

Pon toda tu válido funciones dentro de la primera matriz $definedRoles. Todas las funciones se repetirá y si una condición se verifique, si es 's en el $request objeto. Si es así, el papel se anexará a la $roles de la matriz.

2021-11-23 21:36:26

Sólo ten en cuenta que $request->get está en desuso en 5.4 y que no deberían ser utilizadas. symfony.com/blog/...
Cerad

En otros idiomas

Esta página está en otros idiomas

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