"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Laravel의 열거형 및 언어

Laravel의 열거형 및 언어

2024-11-07에 게시됨
검색:540

보고서
제가 작업한 프로젝트에는 변하지 않는 값을 정의한 선택 필드가 있었습니다. 따라서 이 선택 항목의 항목을 나열하기 위해 열거형 클래스를 만든 다음 이러한 값을 설명하기로 결정했습니다. 그러나 프로젝트는 영어와 스페인어를 지원해야 했고 선택 옵션의 텍스트는 해당 열거형 항목에 대한 참조를 잃지 않고 이에 적응해야 했습니다. 즉, "말" 항목을 선택한 경우 이 항목이 "말" 또는 "caballo"로 표시되더라도 여전히 "말"임을 알 수 있는 시스템이 필요했습니다. 프로젝트에서 enum과 lang을 통합하여 다음과 같은 구조를 만든 것은 데이터의 무결성을 유지하기 위해서였습니다.

열거형이란 무엇입니까
간략한 소개. PHP 버전 8.1부터 값을 열거하기 위한 특수 클래스가 도입되었습니다. 실제로 이는 속성 값이 일정한 클래스를 만들 수 있음을 의미합니다. 예를 들면 상태입니다. 무료로 두면 코드 전체에서 "활성" 상태, 또 다른 "활성", 또 다른 "활성" 등을 갖게 되기 때문입니다. 그러나 상태를 열거형에 연결하고 문자열을 입력하는 대신 열거형을 사용하면 코드의 어느 곳에서나 값이 항상 열거형의 값이 될 것입니다.

enum Status
{
    case ATIVO = "ativo";
    case INATIVO = "inativo";
    case PENDENTE = "pendente";
}

열거형 및 lang
열거형은 클래스이므로 정상적으로 클래스에 대한 메서드를 만들 수 있습니다. 그래서 나는 열거형 항목의 원래 값을 변경하지 않고 열거형 값의 시각화를 처리하고 이를 사용자가 사용하는 언어에 맞게 조정하는 display() 메서드를 만들었습니다. 즉, 사용자에게는 상태가 "보류 중", "보류 중" 또는 "보류 중"으로 표시됩니다. 하지만 데이터베이스에는 "보류 중"으로만 저장됩니다. 이는 원래 값이며 이를 통해 열거형에서 내 항목을 가져올 수 있으며 해당 항목에서 표시 방법을 사용하여 사용자에게 번역된 내용을 표시합니다.
하지만 예제를 보여주기 전에 Laravel lang에 대한 소개를 하겠습니다. lang은 프로젝트가 지원할 번역을 저장하는 프로젝트 루트의 폴더입니다. 각 언어에는 폴더가 있으며 해당 폴더에는 번역 컨텍스트용 파일이 있습니다. 이러한 파일에는 배열이 있으며, 여기서 키는 단어를 나타내고 값은 해당 언어로 번역됩니다.

Enums e lang no Laravel

표시 방법 구성
lang 폴더에서 다음 배열을 사용하여 각 언어 폴더에 대한 status.php 파일을 생성합니다:

value => "Ativo",
    Status::INATIVO->value => "Inativo",
    Status::PENDENTE->value => "Pendente",
];

해당 언어의 해당 번역에 맞춰 배열값을 수정합니다.
그리고 내 표시 방법은 이러한 status.php 파일에 있는 enum 항목의 번역을 가져오고 이 값을 반환합니다.

public function display(): string
{
    return trans('status.'.$this->value);
}

사용 예:

// EN
echo Status::ATIVO->display(); // Active

// PT_BR
echo Status::INATIVO->display(); // Inativo

// ES
echo Status::PENDENTE->display(); // Pediente

결론
이를 통해 코드에서 열거형 값이 일정하게 유지되지만 데이터 무결성을 잃지 않고 표시 방법을 사용하여 사용자의 언어에 적응하도록 보장합니다. 시스템에 새 언어를 추가해도 유연성이 유지됩니다. 이번 영상이 즐거웠기를 바라며 다음에 또 만나요.

릴리스 선언문 이 글은 https://dev.to/eunael/enums-e-lang-no-laravel-43am?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3