SplObjectStorage_getHash.phpt 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. --TEST--
  2. SplObjectStorage::getHash implementation
  3. --FILE--
  4. <?php
  5. $s = new SplObjectStorage();
  6. $o1 = new Stdclass;
  7. $o2 = new Stdclass;
  8. $s[$o1] = "some_value\n";
  9. echo $s->offsetGet($o1);
  10. class MySplObjectStorage extends SplObjectStorage {
  11. #[ReturnTypeWillChange]
  12. public function getHash($obj) {
  13. return 2;
  14. }
  15. }
  16. try {
  17. $s1 = new MySplObjectStorage;
  18. $s1[$o1] = "foo";
  19. } catch(Exception $e) {
  20. echo "caught 1\n";
  21. }
  22. class MySplObjectStorage2 extends SplObjectStorage {
  23. public function getHash($obj): string {
  24. throw new Exception("foo");
  25. return "asd";
  26. }
  27. }
  28. try {
  29. $s2 = new MySplObjectStorage2;
  30. $s2[$o2] = "foo";
  31. } catch(Exception $e) {
  32. echo "caught 2\n";
  33. }
  34. class MySplObjectStorage3 extends SplObjectStorage {
  35. public function getHash($obj): string {
  36. return "asd";
  37. }
  38. }
  39. $s3 = new MySplObjectStorage3;
  40. $s3[$o1] = $o1;
  41. var_dump($s3[$o1]);
  42. $s3[$o2] = $o2;
  43. var_dump($s3[$o1] === $s3[$o2]);
  44. ?>
  45. --EXPECT--
  46. some_value
  47. caught 1
  48. caught 2
  49. object(stdClass)#2 (0) {
  50. }
  51. bool(true)