다형성을 사용하여 여러 결과를 반환하고 동시에 여러 동작을 사용합니다.
P粉187677012
P粉187677012 2023-09-06 00:04:47
0
1
516
<p>저는 Laravel 9를 사용하고 있으며 다음을 포함하는 요청이 있습니다: </p>
    <li>SEASON이라는 매개변수, 값은 <code>배열</code> 따라서 <code>SEASON</code> 매개변수는 <code>array</code> 또는 <code>null</code></li> <li>EXIRY라는 매개변수는 <code>array</code> 또는 <code>null</code></li> </ul> <p>두 개의 클래스가 있습니다. 하나는 <code>SEASON</code> 기능용이고 다른 하나는 <code>Repository</code> 두 가지 모두 배열</p>을 반환하는 <code>execute</code> <pre class="brush:php;toolbar:false;">추상 클래스 저장소 { 추상 공용 함수 실행(): 배열; } 클래스 만료는 저장소를 확장합니다. { 공개 함수 실행() { return ['요청에 만료 매개변수가 포함되어 있으며 계절별 동작이 완료되었습니다.']; } } 클래스 시즌이 저장소를 확장합니다. { 공개 함수 실행() { return ['요청에 시즌 매개변수가 포함되어 있으며 만료 동작이 완료되었습니다.']; } }</pre> <p>내 요청에 SEASON이 포함되어 있으면 Season 클래스의 실행 메서드를 호출하고 싶고, 요청에 Expiry가 포함되어 있으면 만료의 실행 메서드를 호출하고 싶습니다. 또는 이를 호출하고 실행 반환을 배열로 병합하여 결과를 얻을 수 있습니다. </p> <pre class="brush:php;toolbar:false;">['요청에 만료 매개변수가 포함되어 있고 계절별 동작이 완료되었습니다.', '요청에 만료 매개변수가 포함되어 있으며 만료 동작이 완료되었습니다.']</pre> ; <p>컨트롤러에서 시도해 본 결과는 다음과 같습니다. </p> <pre class="brush:php;toolbar:false;">공개 함수 부트스트랩($data) { $parseTopics = 도우미::parseTopicsRequest(); $basicProgram = 새로운 BasicProgramRepository(); $seasonalProgram = new SeasonalProgramRepository($parseTopics['SEASONAL']); $object = count($parseTopics['SEASONAL']) ? $seasonalProgram : $basicProgram; // 다형성 $object->execute()를 반환합니다. }</pre> <p>질문 1: 내 요구 사항을 해결하기 위해 이것을 사용해야 할지 아니면 비슷한 것을 사용해야 할지 잘 모르겠습니다. </p> <pre class="brush:php;toolbar:false;">$employe = new Program(new BasicProgramRepository());</pre> <p>예상 결과: 예상되는 결과는 시즌 매개변수와 만료 시간이 있는지 여부에 따라 달라집니다. 내가 달성하고 싶은 것은 다른 동작(실행 방법)을 사용하는 것입니다</p>
P粉187677012
P粉187677012

모든 응답(1)
P粉086993788

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

예시입니다.

으아악

이렇게 부르시면 됩니다.

으아악

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

한번 시도해 보세요.

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

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

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

behavior.php

으아악

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

으아악

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

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

으아악

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

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

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

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