Rumah >pembangunan bahagian belakang >tutorial php >Menguasai Logik Bersyarat dalam Laravel dengan Kaedah `when()` dan `unless()`: Contoh Kehidupan Nyata

Menguasai Logik Bersyarat dalam Laravel dengan Kaedah `when()` dan `unless()`: Contoh Kehidupan Nyata

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-16 16:06:10732semak imbas

Mastering Conditional Logic in Laravel with `when()` and `unless()` Methods: Real-Life Examples

Laravel, rangka kerja PHP yang terkenal, mempunyai sintaks yang elegan dan ciri yang berkuasa. Diperkenalkan dalam Laravel 11.35.0, kaedah when() dan unless() (sebahagian daripada sifat Conditionable) menawarkan pendekatan yang lebih ringkas dan cekap kepada logik bersyarat, meningkatkan kebolehbacaan dan kebolehselenggaraan kod dengan ketara. Artikel ini meneroka aplikasi praktikal kaedah ini dalam senario Laravel dunia sebenar.

1. Tugasan Peranan Dinamik Berdasarkan Input Pengguna

Pertimbangkan borang pendaftaran pengguna di mana pengguna memilih peranan. Selepas pendaftaran, kebenaran berbeza diberikan berdasarkan peranan yang dipilih.

Tanpa when():

<code class="language-php">if ($request->has('role')) {
    $user->assignRole($request->input('role'));
}</code>

Dengan when():

<code class="language-php">$user->when($request->has('role'), function ($user) use ($request) {
    $user->assignRole($request->input('role'));
});</code>

Kaedah when() merangkum tugasan peranan dengan kemas, hanya dilaksanakan apabila peranan disediakan.

2. Peraturan Pengesahan Dinamik

Dalam borang, medan tertentu mungkin memerlukan pengesahan hanya di bawah syarat tertentu. Sebagai contoh, medan e-mel adalah wajib hanya jika pengguna mengikut serta dalam surat berita.

Tanpa when():

<code class="language-php">$rules = [
    'email' => 'nullable',
];

if ($request->has('newsletter')) {
    $rules['email'] = 'required|email';
}

$request->validate($rules);</code>

Dengan when():

<code class="language-php">$request->when($request->has('newsletter'), function () use ($request) {
    $request->validate([
        'email' => 'required|email',
    ]);
});</code>

Pendekatan yang lebih bersih ini memanfaatkan when() untuk pengesahan bersyarat.

3. Penggabungan Data Bersyarat

Dalam e-dagang, diskaun mungkin dikenakan hanya dengan kod kupon yang sah. Mari gabungkan data diskaun secara dinamik.

Tanpa when():

<code class="language-php">$data = [
    'total_price' => $cart->totalPrice(),
];

if ($request->has('coupon_code')) {
    $coupon = Coupon::where('code', $request->input('coupon_code'))->first();
    if ($coupon) {
        $data['discount'] = $coupon->discount_amount;
    }
}

return response()->json($data);</code>

Dengan when():

<code class="language-php">$data = [
    'total_price' => $cart->totalPrice(),
];

$data = $data->when($request->has('coupon_code'), function ($data) use ($request) {
    $coupon = Coupon::where('code', $request->input('coupon_code'))->first();
    if ($coupon) {
        $data['discount'] = $coupon->discount_amount;
    }
    return $data;
});

return response()->json($data);</code>

Ini menunjukkan pendekatan yang lebih diperkemas, boleh berantai untuk permohonan diskaun bersyarat.

4. Memudahkan Logik Status Pengguna

Menghantar mesej berbeza berdasarkan status pengaktifan pengguna boleh dipermudahkan menggunakan unless().

Tanpa unless():

<code class="language-php">if (!$user->isActive()) {
    return "Your account is inactive. Please contact support.";
} else {
    return "Welcome back!";
}</code>

Dengan unless():

<code class="language-php">return $user->unless($user->isActive(), function () {
    return "Your account is inactive. Please contact support.";
})->otherwise(function () {
    return "Welcome back!";
});</code>

unless() memekatkan logik bersyarat menjadi satu pernyataan return tunggal yang boleh dibaca.

5. Menggabungkan when() dan unless()

Untuk senario yang rumit, gabungkan when() dan unless() untuk mengurus pelbagai jenis pengguna (pentadbir, tetamu, dll.) dan paparkan kandungan yang sesuai.

<code class="language-php">$variable->when($user->isAdmin(), function ($variable) {
    return $variable->adminDashboard();
})->unless($user->isAdmin(), function ($variable) {
    return $variable->guestDashboard();
});</code>

Contoh Selanjutnya (Diringkaskan Secara Ringkas):

Artikel diteruskan dengan contoh ringkas yang serupa yang menunjukkan penggunaan when() dan unless() dalam:

  • Penyatuan Gerbang Pembayaran: Memilih logik pembayaran berdasarkan kaedah pilihan pengguna.
  • Pengiraan Harga Hartanah: Menggunakan diskaun berdasarkan status pembeli kali pertama atau kod promosi.
  • Temujanji Perubatan: Melaraskan pembayaran berdasarkan perlindungan insurans.
  • Pelarasan Harga Bitcoin: Menambah yuran berdasarkan turun naik pasaran.
  • Ketersediaan Produk E-dagang: Menentukan bayaran penghantaran berdasarkan lokasi.
  • Pelan Rawatan Perubatan: Menetapkan pelan rawatan berdasarkan keadaan pesakit.

Contoh ini menyerlahkan kepelbagaian dan keanggunan kaedah when() dan unless() Laravel merentasi pelbagai aplikasi. Dengan menggunakan kaedah ini, pembangun boleh menulis kod Laravel yang lebih bersih, boleh diselenggara dan lebih mudah dibaca.

Atas ialah kandungan terperinci Menguasai Logik Bersyarat dalam Laravel dengan Kaedah `when()` dan `unless()`: Contoh Kehidupan Nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn