値オブジェクトの C# の例をたくさん読んだことがありますが、値によって識別されるのは「オブジェクト」であることを理解しています。値が変更された場合、オブジェクトは「新規」です。
しかし、それはPHPに関しては意味がないようです...それか、私が接続していないだけです。
値オブジェクトは単なる文字列ですか?
値オブジェクトの C# の例をたくさん読んだことがありますが、値によって識別されるのは「オブジェクト」であることを理解しています。値が変更された場合、オブジェクトは「新規」です。
しかし、それはPHPに関しては意味がないようです...それか、私が接続していないだけです。
値オブジェクトは単なる文字列ですか?
これを文脈に入れるために、多くの OO 言語では、オブジェクトはIDによって比較されます。擬似コード:
bar = new Foo
baz = new Foo
bar == baz // false
両方のオブジェクトは、値だけを見ると基本的に同じですが、別々のインスタンスであるため、同一とは見なされません。デモンストレーションするには:
bar = new Foo
baz = bar
bar == baz // true
今:
コンピューター サイエンスでは、値オブジェクトは、お金や日付範囲などの小さくて単純なオブジェクトであり、その等価性は ID に基づいていません。
これは「値オブジェクト」のデモンストレーションになります。
address1 = new Address('Main street 42')
address2 = new Address('Main street 42')
address1 == address2 // true
値が同じであるため、両方のオブジェクトが別々のインスタンスであっても、等しいと見なされます。
PHP には「値オブジェクト」という別個の概念はなく、1 つのタイプのオブジェクトしかありません。ただし、その比較演算子はその区別を行うことができます。
比較演算子 (==) を使用すると、オブジェクト変数は単純な方法で比較されます。つまり、2 つのオブジェクト インスタンスは、同じ属性と値を持ち、同じクラスのインスタンスである場合に等しくなります。
http://www.php.net/manual/en/language.oop5.object-comparison.php
例えば:
$address1 = new Address('Main street 42');
$address2 = new Address('Main street 42');
$address1 == $address2; // true equal...
$address1 === $address2; // false ...but not identical