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