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中文網其他相關文章!