<?php
$originalObj = new A;
class A {
	var $foo = 'default value';
}

// Important note: If you remove the &, the bug dissapears.
function changeFooWithUnusedReference( &$unusedReferenceToFoo, $newValue ) {
		global $originalObj;
		$newObj = clone $originalObj;

		echo "Prior to changing value, the original object is supposed to be 'default value'. Actually is:\n";
		echo $originalObj->foo . "\n";

		echo "Prior to changing value, the cloned object is supposed to be 'default value'. Actually is:\n";
		echo $newObj->foo . "\n";

		// Change value
		$newObj->foo = $newValue;

		echo "\n";
		echo "After changing value, the original object is supposed to be 'default value'. Actually is:\n";
		echo $originalObj->foo . "\n";

		echo "After changing value, the cloned object is supposed to be 'some other value'. Actually is:\n";
		echo $newObj->foo . "\n";
}

changeFooWithUnusedReference( $originalObj->foo, 'Some other value' );
