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 中国語 Web サイトの他の関連記事を参照してください。