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