>백엔드 개발 >PHP 튜토리얼 >PHP 이상의 유형을 사용하여 메소드를 오버로드합니다. 그래야합니다.

PHP 이상의 유형을 사용하여 메소드를 오버로드합니다. 그래야합니다.

Barbara Streisand
Barbara Streisand원래의
2025-01-10 14:05:41926검색

Overloading methods with types in PHP  and above. The way it should be.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.