Return to bug39944.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / Zend / tests |
1.1 ! misho 1: --TEST-- ! 2: Bug #39944 (References broken) ! 3: --FILE-- ! 4: <?php ! 5: $intTheValue = 0; ! 6: ! 7: function &getValue() { ! 8: global $intTheValue; ! 9: return $intTheValue; ! 10: } ! 11: ! 12: function setValue(&$int, $iNewValue) { ! 13: $int = $iNewValue; ! 14: } ! 15: ! 16: setValue(getValue(), 10); ! 17: echo "intTheValue = {$intTheValue}\n"; ! 18: ! 19: $b = &$intTheValue; ! 20: ! 21: setValue(getValue(), 10); ! 22: echo "intTheValue = {$intTheValue}\n"; ! 23: ! 24: /****/ ! 25: ! 26: $arrTheArray = array(); ! 27: ! 28: function &getArray() { ! 29: global $arrTheArray; ! 30: return $arrTheArray; ! 31: } ! 32: ! 33: function addToArray(&$arr, $strToAdd) { ! 34: $arr[] = $strToAdd; ! 35: } ! 36: ! 37: addToArray(getArray(), "xx1"); ! 38: $a = getArray(); ! 39: addToArray($a, "xx2"); ! 40: $b = &$arrTheArray; ! 41: addToArray($b, "xx3"); ! 42: addToArray(getArray(), "xx4"); ! 43: $a = getArray(); ! 44: addToArray($a, "xx5"); ! 45: echo "arrTheArray = " . print_r($arrTheArray, 1); ! 46: ! 47: /****/ ! 48: ! 49: class RefTest { ! 50: protected $arr; ! 51: ! 52: function Add($strToAdd) { ! 53: $this->addToArray($this->getArray(), $strToAdd); ! 54: } ! 55: ! 56: function &getArray() { ! 57: if (!$this->arr) ! 58: $this->arr = array(); ! 59: return $this->arr; ! 60: } ! 61: ! 62: private function addToArray(&$arr, $strToAdd) { ! 63: $arr[] = $strToAdd; ! 64: } ! 65: } ! 66: ! 67: $objRefTest = new RefTest(); ! 68: $objRefTest->Add("xx1"); ! 69: $objRefTest->Add("xx2"); ! 70: $objRefTest->Add("xx3"); ! 71: ! 72: echo "objRefTest->getArray() = " . print_r($objRefTest->getArray(), 1); ! 73: ?> ! 74: --EXPECT-- ! 75: intTheValue = 10 ! 76: intTheValue = 10 ! 77: arrTheArray = Array ! 78: ( ! 79: [0] => xx1 ! 80: [1] => xx3 ! 81: [2] => xx4 ! 82: ) ! 83: objRefTest->getArray() = Array ! 84: ( ! 85: [0] => xx1 ! 86: [1] => xx2 ! 87: [2] => xx3 ! 88: )