ホームページ > バックエンド開発 > PHPチュートリアル > PHP 以降の型を使用したメソッドのオーバーロード。そうあるべきです。

PHP 以降の型を使用したメソッドのオーバーロード。そうあるべきです。

Barbara Streisand
リリース: 2025-01-10 14:05:41
オリジナル
968 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート