0
私は数回以下とreasonsingが何であるかを考えることができないようなコードを見てきましたちょうどコンストラクタを使用するのではなく、このような静的関数?PHPとし、クローンの代わりに、コンストラクタ
私は数回以下とreasonsingが何であるかを考えることができないようなコードを見てきましたちょうどコンストラクタを使用するのではなく、このような静的関数?PHPとし、クローンの代わりに、コンストラクタ
機能1:この機能は、パラメータ$clone->parameter
が設定された現在のクラスオブジェクト$this
のクローンを返す
public function withParameter($parameter)
{
$clone = clone $this;
$clone->parameter = $parameter;
return $clone;
}
。ここでは、見返りに$this
機能あなたの現在のクラスオブジェクト2に影響を与えないオブジェクト$clone
上の操作を実行できます。ここ
public static function fromString(string $parameter)
{
return new StringValueClass($parameter);
}
我々はあなたが返すことができ、この静的関数を使用して他のクラスのオブジェクトを返していますオブジェクトではなく、__construct
を経由することはできません。return
何か
これは、どのように使用されているかを見るために、より多くのコンテキストを 'withParameter()'で見るのに役立ちます。静的関数に関しては、クラスからのより多くのコンテキストが必要ですが、時には実際のコンストラクタがプライベートになることもあります。その代わり、静的な作成メソッドとして実装されたさまざまなタイプの入力パラメータをインスタンス化するいくつかの異なるメソッドを提供します。 –
最初のケースは、クラスを自由に関数を呼び出してクラスの新しいインスタンスを取得できますが、必要に応じて元のインスタンスを維持できるという意味で、クラスが値型のように動作するように見えます。 2つ目はコンテキストに依存しますが、オブジェクトインスタンスを作成するためのより表現力豊かな方法を提供するように見えます。 – apokryfos