Annotation of embedaddon/php/Zend/tests/bug39944.phpt, revision 1.1
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: )
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>