>PHP 프레임워크 >Laravel >Laravel에서 열거형 사용하기

Laravel에서 열거형 사용하기

Guanhui
Guanhui앞으로
2020-06-12 18:10:393316검색

Laravel에서 열거형 사용하기

저는 최근에 열거형을 광범위하게 사용하는 C#을 사용하는 회사에서 일해 왔으며, 찾을 수 있으면 찾을 수 있고 놓치는 데 익숙합니다. 찾지 마세요.

요일, 주문 상태 또는 아래 예와 같이 사용자 유형과 같이 가능한 옵션이 제한된 모든 것에 사용합니다.

열거를 사용하면 여러 가지 이점이 있습니다.

- 숫자를 바꾸거나 잘못 입력하여 발생하는 오류를 줄입니다.

- 나중에 값을 쉽게 변경할 수 있습니다.

- 코드를 읽기 쉽게 만들어 버그가 침투할 가능성이 줄어듭니다.

- 향후 호환성 보장 열거형을 사용하면 나중에 누군가가 멤버 이름에 해당하는 값을 변경할 경우 코드가 실패할 가능성을 크게 줄일 수 있습니다.

PHP 자체는 열거형을 지원하지 않지만 클래스에서 상수를 사용하면 동등한 효과를 얻는 것은 매우 쉽습니다. 또한 laravel-enum이라는 Laravel 패키지를 만들었습니다. 이를 통해 키 및 값 나열, 값에 설명 추가, 열거 값이 필요한 요청 유효성 검사와 같은 도우미 기능에 액세스할 수 있습니다.

이 가이드는 사용법 예시와 모범 사례를 포함하여 Laravel 패키지를 설치하는 과정을 단계별로 안내합니다.

패키지 설치

컴포저를 통해 터미널에서 다음 명령을 실행하여 패키지를 설치할 수 있습니다.

$ composer require bensampo/laravel-enum

Laravel 5.5 미만 버전을 사용하는 경우 config/app에 서비스 공급자를 추가해야 합니다. .php.

'BenSampo\Enum\EnumServiceProvider'

첫 번째 열거 만들기

사용자 유형에 대한 열거를 만듭니다. 샘플 애플리케이션에서 사용자는 관리자, 유료 회원, 회원의 세 가지 사용자 유형 중 하나에 속할 수 있습니다.

패키지는 열거형 생성을 위한 생성기를 포함하므로 다음 명령을 실행하여 UserType이라는 열거형을 생성할 수 있습니다. 파일은 "app/Enums/UserType.php"에 생성됩니다.

php artisan make:enum UserType

이 파일에서 열거형을 생성합니다. 어느 정도의 비계가 보였다. 파일 상단 근처에 가능한 옵션 목록이 상수로 정의되어 있습니다. 이러한 상수 값은 데이터베이스에 저장되므로 정수를 사용하는 것이 가장 좋다고 생각했지만, 각 값이 고유한 한 정수 사용에 제한은 없습니다.

이 예제의 옵션은 다음과 같습니다.

const Administrator = 0;
const PaidMember = 1;
const Member = 2;

데이터베이스에 값 저장

이제 몇 가지 가능성이 있는 열거형이 있으므로 이를 사용할 수 있습니다. 사용자 테이블을 마이그레이션할 때 다음을 추가할 수 있습니다.

$table->tinyInteger('type')->unsigned()->default(UserType::Member);

null은 열거형의 옵션이 아니므로 기본값을 설정해야 합니다. 이 예에서는 기본 사용자가 표준 회원이 된다고 가정해야 합니다.

파일 상단에 이 열거형에 대한 사용 설명을 포함했는지 확인하세요.

use App\Enums\UserType;

작업에 열거형 사용

이제 사용자 모델에 형식화된 속성이 있으므로 이에 액세스하여 열거형 값과 비교할 수 있습니다. 이것이 열거형의 진정한 이점이며 내가 열거형을 그토록 좋아하는 이유입니다. 아래에서 사용 예와 가능한 대안을 살펴보세요.

if ($user->type === UserType::PaidMember) {
    // 在这里只是做一些付费会员的事情.
}

열거형을 사용하지 않으면 다음과 유사한 코드가 있을 수 있습니다.

if ($user->type === 1) { // 이 1은 무엇을 의미하나요?
// ...
}
if ($user->type === 'PaidMember') { // 대체 이게 왜 또 문자열인가요?

위 내용은 Laravel에서 열거형 사용하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
이전 기사:Laravel 뷰 합성기다음 기사:Laravel 뷰 합성기