Rumah >pembangunan bahagian belakang >tutorial php >Menguasai Logik Bersyarat dalam Laravel dengan Kaedah `when()` dan `unless()`: Contoh Kehidupan Nyata
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.
Pertimbangkan borang pendaftaran pengguna di mana pengguna memilih peranan. Selepas pendaftaran, kebenaran berbeza diberikan berdasarkan peranan yang dipilih.
when()
:<code class="language-php">if ($request->has('role')) { $user->assignRole($request->input('role')); }</code>
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.
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.
when()
:<code class="language-php">$rules = [ 'email' => 'nullable', ]; if ($request->has('newsletter')) { $rules['email'] = 'required|email'; } $request->validate($rules);</code>
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.
Dalam e-dagang, diskaun mungkin dikenakan hanya dengan kod kupon yang sah. Mari gabungkan data diskaun secara dinamik.
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>
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.
Menghantar mesej berbeza berdasarkan status pengaktifan pengguna boleh dipermudahkan menggunakan unless()
.
unless()
:<code class="language-php">if (!$user->isActive()) { return "Your account is inactive. Please contact support."; } else { return "Welcome back!"; }</code>
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.
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>
Artikel diteruskan dengan contoh ringkas yang serupa yang menunjukkan penggunaan when()
dan unless()
dalam:
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!