이 글에서는 PHP에서 JAVA 열거 함수를 구현하는 방법을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
N 버전을 반복한 후 마침내 Java 열거 정의와 매우 유사한 최신 버전에서 PHP를 구현하고 열거 라이브러리 php-enum을 사용했습니다.
여기서 Java 열거 기능을 구현해야 하는 이유를 언급할 필요가 있습니다. 나는 Java의 열거형에 대해 알게 되었습니다. 그 전에는 오랫동안 PHP를 사용했지만 열거형에 대해서는 들어본 적이 없습니다. 그러나 Java 프로젝트에서는 특히 API가 통합 상태 코드를 반환할 때 열거형을 볼 수 있습니다. 씬이 거의 표준이 되어서 무시할 수가 없어서 사용법도 익히게 되네요.. PHP를 다시 사용해보면 열거형이 없는게 익숙하지 않아서 검색해보고 싶은 마음이 듭니다. PHP 열거형
우리 모두 알고 있듯이, PHP에는 열거형을 사용하는 데 두 가지 옵션이 있습니다. 하나는 SPL에서 제공되는 공식 열거형 라이브러리입니다. 걱정하지 마십시오. 문서를 읽은 후에는 확장 기능으로 설치해야 할 뿐만 아니라 제공되는 방법도 매우 제한적이라는 것을 알게 될 것입니다. 따라서 일반적으로 우리는 타사 열거형 라이브러리를 사용하는 두 번째 방법을 선택합니다. 제3자 열거형의 소스 코드를 읽어보면 Java 열거형의 그림자가 다소 있음을 알 수 있습니다. 그러나 Java 열거형 기능을 구현했다면 오늘날의 라이브러리와 기사는 존재하지 않았을 것입니다.
많은 열거형을 확인한 결과 모두 Java 열거형의 핵심 기능인 사용자 정의 속성 값이 부족하다는 것을 발견했습니다. (Java 열거형에서 열거형은 단순히 상수 이름과 상수 값을 정의하는 것이 아닙니다. 요소) 또한 PHP에서 이 기능을 구현하는 것이 쉽지 않다는 것을 알았으므로 여러 프로젝트에서 사용해야 하기 때문에 두 속성을 수정하는 기능을 구현하기 위해 프로젝트에 추상 클래스를 작성했습니다. 여러 번 재구성하고 내 생각을 뒤집은 끝에 마침내 Java 열거형 구현에 가까워졌습니다.
composer require phpenum/phpenum
PHPEnum은 Java 열거형과 함께 사용할 수 있습니다. 예를 들어 성별을 나타내는 열거형을 정의하면
Java에서:
public enum GenderEnum { MALE(1, "male"), FEMALE(2, "female"); private Integer id; private String name; GenderEnum(Integer id, String name) { this.id = id; this.name = name; } public Integer getId() { return id; } public String getName() { return name; } }
PhpEnum 사용:
class GenderEnum extends \PhpEnum\Enum { const MALE = [1, 'male']; const FEMALE = [2, 'female']; private $id; private $name; protected function construct($id, $name) { $this->id = $id; $this->name->$name; } public function getId() { return $this->id; } public function getName() { return $this->name; } }
사용법도 매우 유사하다는 것을 알 수 있습니다.
Java에서:
GenderEnum.values(); // enum instance array GenderEnum.valueOf("FEMALE"); // enum instance GenderEnum.MALE.equals(GenderEnum.valueOf("MALE")); // true GenderEnum.MALE.name(); // MALE GenderEnum.MALE.ordinal(); // 0 GenderEnum.MALE.toString(); // MALE GenderEnum.MALE.getId(); // 1 GenderEnum.MALE.getName(); // male
PhpEnum 사용:
GenderEnum::values(); // enum instance array GenderEnum::valueOf('FEMALE'); // enum instance GenderEnum::MALE()->equals(GenderEnum::valueOf('MALE')); // true GenderEnum::MALE()->name(); // MALE GenderEnum::MALE()->ordinal(); // 0 (string)GenderEnum::MALE(); // MALE GenderEnum::MALE()->getId(); // 1 GenderEnum::MALE()->getName(); // male
그뿐만 아니라, PhpEnum은 하위 클래스에서도 고급 기능을 제공합니다
GenderEnum::MALE()->idEquals(1); // true GenderEnum::MALE()->NameEquals('male'); // true GenderEnum::containsId(1); // 1 GenderEnum::containsName('male'); // 1 GenderEnum::ofId(1); // enum instance GenderEnum::ofName('male'); // enum instance
추천 학습: php 비디오 튜토리얼
위 내용은 PHP에서 JAVA 열거 함수를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!