Вход Регистрация
Файл: gapps/vendor/phpunit/phpunit/src/Util/GlobalState.php
Строк: 121
<?php
/*
 * This file is part of PHPUnit.
 *
 * (c) Sebastian Bergmann <sebastian@phpunit.de>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

/**
 * @since Class available since Release 3.4.0
 */
class PHPUnit_Util_GlobalState
{
    
/**
     * @var array
     */
    
protected static $superGlobalArrays = array(
      
'_ENV',
      
'_POST',
      
'_GET',
      
'_COOKIE',
      
'_SERVER',
      
'_FILES',
      
'_REQUEST'
    
);

    
/**
     * @var array
     */
    
protected static $superGlobalArraysLong = array(
      
'HTTP_ENV_VARS',
      
'HTTP_POST_VARS',
      
'HTTP_GET_VARS',
      
'HTTP_COOKIE_VARS',
      
'HTTP_SERVER_VARS',
      
'HTTP_POST_FILES'
    
);

    public static function 
getIncludedFilesAsString()
    {
        return static::
processIncludedFilesAsString(get_included_files());
    }

    public static function 
processIncludedFilesAsString(array $files)
    {
        
$blacklist = new PHPUnit_Util_Blacklist;
        
$prefix    false;
        
$result    '';

        if (
defined('__PHPUNIT_PHAR__')) {
            
$prefix 'phar://' __PHPUNIT_PHAR__ '/';
        }

        for (
$i count($files) - 1$i 0$i--) {
            
$file $files[$i];

            if (
$prefix !== false && strpos($file$prefix) === 0) {
                continue;
            }

            
// Skip virtual file system protocols
            
if (preg_match('/^(vfs|phpvfs[a-z0-9]+):/'$file)) {
                continue;
            }

            if (!
$blacklist->isBlacklisted($file) && is_file($file)) {
                
$result 'require_once '' . $file . "';n" . $result;
            }
        }

        return 
$result;
    }

    public static function getIniSettingsAsString()
    {
        
$result      = '';
        
$iniSettings = ini_get_all(null, false);

        foreach (
$iniSettings as $key => $value) {
            
$result .= sprintf(
                '@ini_set(%s, %s);' . "
n",
                self::exportVariable(
$key),
                self::exportVariable(
$value)
            );
        }

        return 
$result;
    }

    public static function getConstantsAsString()
    {
        
$constants = get_defined_constants(true);
        
$result    = '';

        if (isset(
$constants['user'])) {
            foreach (
$constants['user'] as $name => $value) {
                
$result .= sprintf(
                    'if (!defined('%s')) define('%s', %s);' . "
n",
                    
$name,
                    
$name,
                    self::exportVariable(
$value)
                );
            }
        }

        return 
$result;
    }

    public static function getGlobalsAsString()
    {
        
$result            = '';
        
$superGlobalArrays = self::getSuperGlobalArrays();

        foreach (
$superGlobalArrays as $superGlobalArray) {
            if (isset(
$GLOBALS[$superGlobalArray]) &&
                is_array(
$GLOBALS[$superGlobalArray])) {
                foreach (array_keys(
$GLOBALS[$superGlobalArray]) as $key) {
                    if (
$GLOBALS[$superGlobalArray][$key] instanceof Closure) {
                        continue;
                    }

                    
$result .= sprintf(
                        '
$GLOBALS['%s']['%s'] = %s;' . "n",
                        
$superGlobalArray,
                        
$key,
                        self::exportVariable(
$GLOBALS[$superGlobalArray][$key])
                    );
                }
            }
        }

        
$blacklist   = $superGlobalArrays;
        
$blacklist[] = 'GLOBALS';

        foreach (array_keys(
$GLOBALS) as $key) {
            if (!in_array(
$key$blacklist) && !$GLOBALS[$key] instanceof Closure) {
                
$result .= sprintf(
                    '
$GLOBALS['%s'] = %s;' . "n",
                    
$key,
                    self::exportVariable(
$GLOBALS[$key])
                );
            }
        }

        return 
$result;
    }

    protected static function getSuperGlobalArrays()
    {
        if (ini_get('register_long_arrays') == '1') {
            return array_merge(
                self::
$superGlobalArrays,
                self::
$superGlobalArraysLong
            );
        } else {
            return self::
$superGlobalArrays;
        }
    }

    protected static function exportVariable(
$variable)
    {
        if (is_scalar(
$variable) || is_null($variable) ||
           (is_array(
$variable) && self::arrayOnlyContainsScalars($variable))) {
            return var_export(
$variable, true);
        }

        return 'unserialize(' .
                var_export(serialize(
$variable), true) .
                ')';
    }

    protected static function arrayOnlyContainsScalars(array 
$array)
    {
        
$result = true;

        foreach (
$array as $element) {
            if (is_array(
$element)) {
                
$result = self::arrayOnlyContainsScalars($element);
            } elseif (!is_scalar(
$element) && !is_null($element)) {
                
$result = false;
            }

            if (
$result === false) {
                break;
            }
        }

        return 
$result;
    }
}
Онлайн: 0
Реклама