ホームページ > バックエンド開発 > PHPチュートリアル > PHPのオーバーロードを正しく理解する

PHPのオーバーロードを正しく理解する

藏色散人
リリース: 2023-04-07 17:40:01
転載
2054 人が閲覧しました

PHP のオーバーロードは Java のオーバーロードとは異なるため、混同しないでください。 Java ではクラス内で同じ名前の複数の関数が許可され、各関数には異なるパラメーターが与えられますが、PHP では同じ名前の関数が 1 つだけ許可されます。たとえば、Java は複数のコンストラクターを持つことができますが、PHP は 1 つのコンストラクターのみを持つことができます。

PHP のオーバーロードとは、マジック メソッドによる属性とクラスの動的作成を指します

#● 属性のオーバーロード - __get および __set

#● メソッドのオーバーロード - __call および __callStatic

たとえば、Laravel のリクエスト クラスは属性のオーバーロードを実装し、コードをより簡潔にします

$name = $request->name;
ログイン後にコピー

この属性はクラスには存在しませんが、マジック メソッドを通じて渡されます。具体的な実装は次のとおりです。以下のように

public function __get($key)
{
    return Arr::get($this->all(), $key, function () use ($key) {
        return $this->route($key);
    });
}
ログイン後にコピー

この実装方法は広く使用されており、実装原理を簡単に要約します

class Foo
{   
    private $params = [];
    function __construct(array $params = [])
    {
        $this->params = $params;
    }
    public function __set($name, $value)
    {
        $this->params[$name] = $value;
    }
    public function __get($name)
    {
        return $this->params[$name];
    }
    public function __isset($name)
    {
        return isset($this->params[$name]);
    }
    public function __unset($name)
    {
        unset($this->params[$name]);
    }
}
ログイン後にコピー

以上がPHPのオーバーロードを正しく理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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