公式の説明を見て同じクラスの同じインスタンスではないためfalseを返すのはわかっているのですが、比較の際にはできるだけ厳密等価演算子を使いたいです
こういった場合にはどう比較するのがスタンダードなのでしょうか
そもそもオブジェクトの比較で厳密等価演算子を使用したいというのが無理な話でしょうか...
お手数ですがご回答いただけますと幸いです????♂️
(コードのnamespaceは省略しています)
php
1// UserId.php 2 3class UserId 4{ 5 private string $value; 6 public function __construct(string $value) 7 { 8 $this->value = $value; 9 } 10 11 public function getUserId() 12 { 13 return $this->value; 14 } 15}
php
1// User.php 2 3class User 4{ 5 private UserId $id; 6 private string $name; 7 8 public function __construct(UserId $id, string $name) 9 { 10 $this->id = $id; 11 $this->name = $name; 12 } 13 14 public function getId() 15 { 16 return $this->id; 17 } 18 19 public function getName() 20 { 21 return $this->name; 22 } 23 24 public function equals(Self $user): bool 25 { 26 // return $this->id == $user->getId(); // 緩やかな比較のためtrue 27 return $this->id === $user->getId(); // 同じクラスの違うインスタンスのためfalse 28 } 29}
php
1// client.php 2 3$user = new User(new UserId('1234'), 'taro'); 4$user1 = new User(new UserId('1234'), 'taro'); 5$user2 = new User(new UserId('1235'), 'taro'); 6var_dump($user->equals($user1)); // false 7var_dump($user->equals($user2)); // false 8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/22 09:03 編集
2020/11/22 09:00 編集
2020/11/22 09:11