SplObjectStorage_getHash.phpt 1015 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. public function getHash($obj) {
  12. return 2;
  13. }
  14. }
  15. try {
  16. $s1 = new MySplObjectStorage;
  17. $s1[$o1] = "foo";
  18. } catch(Exception $e) {
  19. echo "caught\n";
  20. }
  21. class MySplObjectStorage2 extends SplObjectStorage {
  22. public function getHash($obj) {
  23. throw new Exception("foo");
  24. return "asd";
  25. }
  26. }
  27. try {
  28. $s2 = new MySplObjectStorage2;
  29. $s2[$o2] = "foo";
  30. } catch(Exception $e) {
  31. echo "caught\n";
  32. }
  33. class MySplObjectStorage3 extends SplObjectStorage {
  34. public function getHash($obj) {
  35. return "asd";
  36. }
  37. }
  38. $s3 = new MySplObjectStorage3;
  39. $s3[$o1] = $o1;
  40. var_dump($s3[$o1]);
  41. $s3[$o2] = $o2;
  42. var_dump($s3[$o1] === $s3[$o2]);
  43. ?>
  44. ===DONE===
  45. --EXPECT--
  46. some_value
  47. caught
  48. caught
  49. object(stdClass)#2 (0) {
  50. }
  51. bool(true)
  52. ===DONE===