PHP เจาะจง optimization สำหรับถ้าเรื่องใน Symfony

0

คำถาม

ใน Symfony แอ๊ปผมต้องการเพื่อใช้สลับ/กรณีฟังก์ชันแต่การร้องขอค่าพารามิเตอร์จะปกป้องฉันและฉันต้องการ uggly ถ้าเงื่อนไขอย่าง:

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

คุณสามารถช่วยฉัน simplify มัน?

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

คำตอบที่ดีที่สุด

1

คุณสามารถลบข้อความอะไรเลย

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

ทำไมฉันถึง'm ใช้ ArrayObject ห้องเรียนด้วยได้ไม๊? เพราะว่ามันทำงานเหมือนเป็นยอมจำนนต่อไปแล้ว ไม่เหมือนเป็นอาเรย์ที่วัตถุ occupies ความทรงจำเดียวสำหรับปัจจุบันรายการเมื่อ iterated. ดังนั้นของคุว occupies น้อยความทรงจำและคุณไม่โหลดรายการทั้งหมดเข้าไปในหน่วยความจำจนหมดแล้ว

ทั้งหมดของคุณที่ถูกต้องบทบาทในคนแรกตารางคู่ลำดับ $definedRoles. ทั้งหมดบทบาทจะต้อ iterated และถ้าเงื่อนไขงจะไปตรวจสอบถ้ามั's ใน $request วัตถุ. ถ้าอย่างนั้นกับบทบาทที่จะ appended ไป $roles อาเรย์.

2021-11-23 21:36:26

แค่ต้องรู้เรื่องเงินร้อง->เข้าใจก็คือ deprecated ใน 5.4 และควรจะไม่ต้องใช้แล้ว symfony.com/blog/...
Cerad

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่