> 백엔드 개발 > PHP 튜토리얼 > 'when()' 및 'unless()' 메서드를 사용하여 Laravel에서 조건부 논리 익히기: 실제 사례

'when()' 및 'unless()' 메서드를 사용하여 Laravel에서 조건부 논리 익히기: 실제 사례

Mary-Kate Olsen
풀어 주다: 2025-01-16 16:06:10
원래의
732명이 탐색했습니다.

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

유명한 PHP 프레임워크인 Laravel은 우아한 구문과 강력한 기능을 자랑합니다. Laravel 11.35.0에 도입된 when()unless() 메서드(Conditionable 특성의 일부)는 조건부 논리에 대한 보다 간결하고 효율적인 접근 방식을 제공하여 코드 가독성과 유지 관리성을 크게 향상시킵니다. 이 기사에서는 실제 Laravel 시나리오에서 이러한 방법을 실제로 적용하는 방법을 살펴봅니다.

1. 사용자 입력에 따른 동적 역할 할당

사용자가 역할을 선택하는 사용자 등록 양식을 고려해 보세요. 등록 후 선택한 역할에 따라 다양한 권한이 부여됩니다.

없음 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>
로그인 후 복사

when() 메소드는 역할 할당을 깔끔하게 캡슐화하여 역할이 제공될 때만 실행됩니다.

2. 동적 검증 규칙

양식에서 특정 필드는 특정 조건에서만 확인이 필요할 수 있습니다. 예를 들어 이메일 필드는 사용자가 뉴스레터를 수신하는 경우에만 필수입니다.

없음 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>
로그인 후 복사

이 깔끔한 접근 방식은 when() 조건부 유효성 검사를 활용합니다.

3. 조건부 데이터 병합

전자상거래에서는 유효한 쿠폰 코드가 있어야만 할인이 적용될 수 있습니다. 할인 데이터를 동적으로 병합해 보겠습니다.

없음 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>
로그인 후 복사

이는 조건부 할인 적용에 대한 보다 간소화되고 연결 가능한 접근 방식을 보여줍니다.

4. 사용자 상태 로직 단순화

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()은 조건부 논리를 읽기 쉬운 단일 return 문으로 압축합니다.

5. when()unless()

결합

복잡한 시나리오의 경우 when()unless()를 결합하여 다양한 사용자 유형(관리자, 게스트 등)을 관리하고 적절한 콘텐츠를 표시하세요.

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

추가 예(간략하게 요약):

이 기사는 다음에서 when()unless() 사용을 보여주는 유사한 간결한 예를 통해 계속됩니다.

  • 결제 게이트웨이 통합: 사용자가 선택한 방법에 따라 결제 로직을 선택합니다.
  • 부동산 가격 계산: 첫 구매자 상태 또는 프로모션 코드를 기준으로 할인을 적용합니다.
  • 의료 예약: 보험 적용 범위에 따라 지불 조정
  • 비트코인 가격 조정: 시장 변동성에 따라 수수료를 추가합니다.
  • 전자상거래 제품 가용성: 위치에 따라 배송비 결정
  • 의학적 치료 계획: 환자 상태에 따라 치료 계획을 배정합니다.

이러한 예는 다양한 애플리케이션에 걸쳐 Laravel의 when()unless() 메서드의 다양성과 우아함을 강조합니다. 이러한 방법을 활용함으로써 개발자는 더 깔끔하고 유지 관리가 용이하며 읽기 쉬운 Laravel 코드를 작성할 수 있습니다.

위 내용은 'when()' 및 'unless()' 메서드를 사용하여 Laravel에서 조건부 논리 익히기: 실제 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿