Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/VarDumper/Caster/PdoCaster.php
Строк: 64
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentVarDumperCaster;

use 
SymfonyComponentVarDumperClonerStub;

/**
 * Casts PDO related classes to array representation.
 *
 * @author Nicolas Grekas <p@tchwork.com>
 */
class PdoCaster
{
    private static 
$pdoAttributes = array(
        
'CASE' => array(
            
PDO::CASE_LOWER => 'LOWER',
            
PDO::CASE_NATURAL => 'NATURAL',
            
PDO::CASE_UPPER => 'UPPER',
        ),
        
'ERRMODE' => array(
            
PDO::ERRMODE_SILENT => 'SILENT',
            
PDO::ERRMODE_WARNING => 'WARNING',
            
PDO::ERRMODE_EXCEPTION => 'EXCEPTION',
        ),
        
'TIMEOUT',
        
'PREFETCH',
        
'AUTOCOMMIT',
        
'PERSISTENT',
        
'DRIVER_NAME',
        
'SERVER_INFO',
        
'ORACLE_NULLS' => array(
            
PDO::NULL_NATURAL => 'NATURAL',
            
PDO::NULL_EMPTY_STRING => 'EMPTY_STRING',
            
PDO::NULL_TO_STRING => 'TO_STRING',
        ),
        
'CLIENT_VERSION',
        
'SERVER_VERSION',
        
'STATEMENT_CLASS',
        
'EMULATE_PREPARES',
        
'CONNECTION_STATUS',
        
'STRINGIFY_FETCHES',
        
'DEFAULT_FETCH_MODE' => array(
            
PDO::FETCH_ASSOC => 'ASSOC',
            
PDO::FETCH_BOTH => 'BOTH',
            
PDO::FETCH_LAZY => 'LAZY',
            
PDO::FETCH_NUM => 'NUM',
            
PDO::FETCH_OBJ => 'OBJ',
        ),
    );

    public static function 
castPdo(PDO $c, array $aStub $stub$isNested)
    {
        
$a = array();
        
$errmode $c->getAttribute(PDO::ATTR_ERRMODE);
        
$c->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);

        foreach (
self::$pdoAttributes as $attr => $values) {
            if (!isset(
$attr[0])) {
                
$attr $values;
                
$values = array();
            }

            try {
                
$a[$attr] = 'ERRMODE' === $attr $errmode $c->getAttribute(constant("PDO::ATTR_{$attr}"));
                if (
$values && isset($values[$a[$attr]])) {
                    
$a[$attr] = new ConstStub($values[$a[$attr]], $a[$attr]);
                }
            } catch (
Exception $m) {
            }
        }

        
$m "~";
        
$a = (array) $c + array(
            
$m.'inTransaction' => method_exists($c'inTransaction'),
            
$m.'errorInfo' => $c->errorInfo(),
            
$m.'attributes' => $a,
        );

        if (
$a[$m.'inTransaction']) {
            
$a[$m.'inTransaction'] = $c->inTransaction();
        } else {
            unset(
$a[$m.'inTransaction']);
        }

        if (!isset(
$a[$m.'errorInfo'][1], $a[$m.'errorInfo'][2])) {
            unset(
$a[$m.'errorInfo']);
        }

        
$c->setAttribute(PDO::ATTR_ERRMODE$errmode);

        return 
$a;
    }

    public static function 
castPdoStatement(PDOStatement $c, array $aStub $stub$isNested)
    {
        
$m "~";
        
$a[$m.'errorInfo'] = $c->errorInfo();

        if (!isset(
$a[$m.'errorInfo'][1], $a[$m.'errorInfo'][2])) {
            unset(
$a[$m.'errorInfo']);
        }

        return 
$a;
    }
}
Онлайн: 1
Реклама