PHP ottimizzazione Specifica per se il loop in Symfony

0

Domanda

In Symfony app, ho bisogno di usare switch/case di funzione, ma i parametri della richiesta, impedisce di me, e io uso un orrendo se la condizione come :

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

Mi potete aiutare a semplificare ?

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

Migliore risposta

1

Si può provare il seguente.

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

Perché io 'm utilizzando il ArrayObject classe? Perché funziona come una resa già. A differenza di un array, l'oggetto occupa solo memoria per la voce corrente, quando iterato. Così il ciclo occupa poca memoria e non carico di tutte le voci nella memoria.

Mettere tutti i vostri valido ruoli nel primo array $definedRoles. Tutti i ruoli verranno processate e se la condizione si verifica, se e 'in $request oggetto. Se è così, il ruolo verrà aggiunto al $roles array.

2021-11-23 21:36:26

Basta essere consapevoli del fatto che $request->get è sconsigliata a 5.4 e non deve più essere utilizzato. symfony.com/blog/...
Cerad

In altre lingue

Questa pagina è in altre lingue

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