首頁 >後端開發 >php教程 >使用 PHP 及以上版本中的型別重載方法。應該如此。

使用 PHP 及以上版本中的型別重載方法。應該如此。

Barbara Streisand
Barbara Streisand原創
2025-01-10 14:05:41924瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn