首页 > 后端开发 > php教程 > 使用 PHP 及以上版本中的类型重载方法。应该如此。

使用 PHP 及以上版本中的类型重载方法。应该如此。

Barbara Streisand
发布: 2025-01-10 14:05:41
原创
923 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板