PHP 7.4에는 PHP 프로그래밍 경험을 Java 또는 C#과 같은 언어에 더 가깝게 만드는 유형 힌트가 도입되었습니다. 그러나 다른 형식화된 언어 프로젝트에서처럼 메서드를 오버로드할 수 없다는 사실을 발견했습니다.
Stack Overflow에서 제공하는 솔루션이 만족스럽지 않아서 가장 효율적이고 간결하게 메서드를 오버로드하는 방법을 고민하고 이에 대한 지원 라이브러리를 만들었습니다. 이것이 여러분이 찾을 수 있는 최고의 솔루션일 수도 있기 때문에 여러분과 공유하고 싶었습니다. GitHub에서 다운로드하여 자세히 알아볼 수 있습니다.
아래 짧은 코드 스니펫만으로도 작동 방식을 이해하기에 충분하다고 생각합니다.
<code class="language-php">$userRepository = new UserRepository(); $userRepository->add('Micheal', 'Jordan', 23); $userRepository->add('Micheal Jordan', 23); $userRepository->add(new User("Micheal", "Jordan", 23)); $userRepository->add(new UserDto("Micheal", "Jordan", 23)); $userRepository->add(['fist_name' => 'Micheal', 'last_name' => 'Jordan', 'number' => 23]);</code>
<code class="language-php">public function add(mixed ...$args): void { $addMethodOverloader = MethodOverloader::create($this) ->register($this->addByFirstNameLastNameAndNumber(...), 'string', 'string', 'int') ->register($this->adddByUser(...), User::class) ->register($this->addByUserDto(...), UserDto::class) ->register($this->addByArray(...), 'array') ->register($this->addNyNameAndNumber(...), 'string', 'int') ->onFailure(function() { throw new MyCustomException(); }); $addMethodOverloader->invoke($args); }</code>
처음 올리는 글인데 괜찮은지 알려주세요. 궁금한 점이 있으시면 언제든지 문의해 주세요.
위 내용은 PHP 이상의 유형을 사용하여 메소드를 오버로드합니다. 그래야합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!