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中文网其他相关文章!