다형성을 사용하여 여러 결과를 반환하고 동시에 여러 동작을 사용합니다.
P粉187677012
P粉187677012 2023-09-06 00:04:47
0
1
464

저는 Laravel 9를 사용하고 있으며 다음을 포함하는 요청이 있습니다:

  • SEASON이라는 매개변수, 값은 배열 따라서 SEASON 매개변수는 array 또는 null
  • EXIRY라는 매개변수는 array 또는 null

두 개의 클래스가 있습니다. 하나는 SEASON 기능용이고 다른 하나는 Repository 두 가지 모두 배열

을 반환하는 execute
추상 클래스 저장소 { 추상 공용 함수 실행(): 배열; } 클래스 만료는 저장소를 확장합니다. { 공개 함수 실행() { return ['요청에 만료 매개변수가 포함되어 있으며 계절별 동작이 완료되었습니다.']; } } 클래스 시즌이 저장소를 확장합니다. { 공개 함수 실행() { return ['요청에 시즌 매개변수가 포함되어 있으며 만료 동작이 완료되었습니다.']; } }

내 요청에 SEASON이 포함되어 있으면 Season 클래스의 실행 메서드를 호출하고 싶고, 요청에 Expiry가 포함되어 있으면 만료의 실행 메서드를 호출하고 싶습니다. 또는 이를 호출하고 실행 반환을 배열로 병합하여 결과를 얻을 수 있습니다.

['요청에 만료 매개변수가 포함되어 있고 계절별 동작이 완료되었습니다.', '요청에 만료 매개변수가 포함되어 있으며 만료 동작이 완료되었습니다.']
;

컨트롤러에서 시도해 본 결과는 다음과 같습니다.

공개 함수 부트스트랩($data) { $parseTopics = 도우미::parseTopicsRequest(); $basicProgram = 새로운 BasicProgramRepository(); $seasonalProgram = new SeasonalProgramRepository($parseTopics['SEASONAL']); $object = count($parseTopics['SEASONAL']) ? $seasonalProgram : $basicProgram; // 다형성 $object->execute()를 반환합니다. }

질문 1: 내 요구 사항을 해결하기 위해 이것을 사용해야 할지 아니면 비슷한 것을 사용해야 할지 잘 모르겠습니다.

$employe = new Program(new BasicProgramRepository());

예상 결과: 예상되는 결과는 시즌 매개변수와 만료 시간이 있는지 여부에 따라 달라집니다. 내가 달성하고 싶은 것은 다른 동작(실행 방법)을 사용하는 것입니다

P粉187677012
P粉187677012

모든 응답 (1)
P粉086993788

다형성 접근 방식을 구현하려면 해당 논리를 관리하기 위한 저장소나 무언가를 만드는 것이 좋습니다.

예시입니다.

으아악

이렇게 부르시면 됩니다.

으아악

이 방법은 매개변수가 지정한 값에만 작동합니다. Season 클래스와 Expiry 클래스의 반환 결과가 거의 같다면 특성별로 관리하는 것이 가장 좋습니다. (예: 예제 코드의 $pattern)

한번 시도해 보세요.

댓글 잘 읽었으니 팔로우 하세요..

예를 들어, getResult()의 결과만 얻는 것을 선호합니다. 따라서 특정 패턴과 너무 많은 로직을 getResult()에 작성해서는 안 됩니다.

특성을 사용하는 경우 다음 예를 참조하세요. 먼저 관리 동작 클래스를 만들어야 합니다.

behavior.php

으아악

그런 다음 동일한 수준에 Behavior 디렉터리를 만들어야 합니다. 이 디렉터리를 이동하면 이러한 서명 파일이 생성됩니다.

으아악

findAccessibleClass() 메소드는 올바른 클래스를 찾는 역할을 합니다.

그러면 이 메소드를 이렇게 호출할 수 있습니다.

으아악

getResult()에 코드가 너무 많으면 해당 코드를 분리하는 것이 가장 좋습니다.

행동 특성을 생성하기 위해 getResult는 행동 논리를 담당할 필요가 없습니다. 즉, 테스트하거나 수정하기가 쉽습니다.

모든 일이 잘 되길 바랍니다.

    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!