If we copy am object by ref into our temporary array
then this doesn't really make this method very useful
as the same object would be restored, with any changes
after the test has run.
Thus objects should be cloned when being dumped in
here, we use unserialize() and serialize() instead as
we would also want to clone the objects within the
object to avoid changes in there!
These is no point in adding an if is_object call so
we just serialize and deserialize everything!
Change-Id: I5e4ef114405888932014edae6b44afc6ee2c4863
// setMwGlobals() on the same global would override the original
// value.
if ( !array_key_exists( $key, $this->mwGlobals ) ) {
- $this->mwGlobals[$key] = $GLOBALS[$key];
+ // NOTE: we serialize then unserialize the value in case it is an object
+ // this stops any objects being passed by reference. We could use clone
+ // and if is_object but this does account for objects within objects!
+ $this->mwGlobals[$key] = unserialize( serialize( $GLOBALS[$key] ) );
}
// Override the global