class Restorer in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/sebastian/global-state/src/Restorer.php \SebastianBergmann\GlobalState\Restorer
Restorer of snapshots of global state.
@author Sebastian Bergmann <sebastian@phpunit.de> @copyright 2001-2014 Sebastian Bergmann <sebastian@phpunit.de> @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License @link http://www.github.com/sebastianbergmann/global-state
Hierarchy
- class \SebastianBergmann\GlobalState\Restorer
Expanded class hierarchy of Restorer
1 file declares its use of Restorer
- TestCase.php in vendor/
phpunit/ phpunit/ src/ Framework/ TestCase.php
File
- vendor/
sebastian/ global-state/ src/ Restorer.php, line 55
Namespace
SebastianBergmann\GlobalStateView source
class Restorer {
/**
* Deletes function definitions that are not defined in a snapshot.
*
* @param Snapshot $snapshot
* @throws RuntimeException when the uopz_delete() function is not available
* @see https://github.com/krakjoe/uopz
*/
public function restoreFunctions(Snapshot $snapshot) {
if (!function_exists('uopz_delete')) {
throw new RuntimeException('The uopz_delete() function is required for this operation');
}
$functions = get_defined_functions();
foreach (array_diff($functions['user'], $snapshot
->functions()) as $function) {
uopz_delete($function);
}
}
/**
* Restores all global and super-global variables from a snapshot.
*
* @param Snapshot $snapshot
*/
public function restoreGlobalVariables(Snapshot $snapshot) {
$superGlobalArrays = $snapshot
->superGlobalArrays();
foreach ($superGlobalArrays as $superGlobalArray) {
$this
->restoreSuperGlobalArray($snapshot, $superGlobalArray);
}
$globalVariables = $snapshot
->globalVariables();
foreach (array_keys($GLOBALS) as $key) {
if ($key != 'GLOBALS' && !in_array($key, $superGlobalArrays) && !$snapshot
->blacklist()
->isGlobalVariableBlacklisted($key)) {
if (isset($globalVariables[$key])) {
$GLOBALS[$key] = $globalVariables[$key];
}
else {
unset($GLOBALS[$key]);
}
}
}
}
/**
* Restores all static attributes in user-defined classes from this snapshot.
*
* @param Snapshot $snapshot
*/
public function restoreStaticAttributes(Snapshot $snapshot) {
foreach ($snapshot
->staticAttributes() as $className => $staticAttributes) {
foreach ($staticAttributes as $name => $value) {
$reflector = new ReflectionProperty($className, $name);
$reflector
->setAccessible(true);
$reflector
->setValue($value);
}
}
}
/**
* Restores a super-global variable array from this snapshot.
*
* @param Snapshot $snapshot
* @param $superGlobalArray
*/
private function restoreSuperGlobalArray(Snapshot $snapshot, $superGlobalArray) {
$superGlobalVariables = $snapshot
->superGlobalVariables();
if (isset($GLOBALS[$superGlobalArray]) && is_array($GLOBALS[$superGlobalArray]) && isset($superGlobalVariables[$superGlobalArray])) {
$keys = array_keys(array_merge($GLOBALS[$superGlobalArray], $superGlobalVariables[$superGlobalArray]));
foreach ($keys as $key) {
if (isset($superGlobalVariables[$superGlobalArray][$key])) {
$GLOBALS[$superGlobalArray][$key] = $superGlobalVariables[$superGlobalArray][$key];
}
else {
unset($GLOBALS[$superGlobalArray][$key]);
}
}
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Restorer:: |
public | function | Deletes function definitions that are not defined in a snapshot. | |
Restorer:: |
public | function | Restores all global and super-global variables from a snapshot. | |
Restorer:: |
public | function | Restores all static attributes in user-defined classes from this snapshot. | |
Restorer:: |
private | function | Restores a super-global variable array from this snapshot. |