예제 #1
0
 function testBreakReference()
 {
     // Get a reference and make a change
     $fooRef1 = self::returnByReference();
     $this->assertEquals('original', $fooRef1['foo']);
     $fooRef1['foo'] = 'modified';
     // Make sure that the referenced item was actually changed
     $fooRef2 = self::returnByReference();
     $this->assertEquals('modified', $fooRef1['foo']);
     $this->assertEquals('original', $fooRef2['foo']);
     // Get a non-reference, make a change, and make sure the references were unaffected.
     $fooNonReference = CRM_Utils_Array::breakReference(self::returnByReference());
     $fooNonReference['foo'] = 'privately-modified';
     $this->assertEquals('modified', $fooRef1['foo']);
     $this->assertEquals('original', $fooRef2['foo']);
     $this->assertEquals('privately-modified', $fooNonReference['foo']);
 }