/var/www/hkosl.com/nick/codeigniter/application/vendor/symfony/var-dumper/Caster/PdoCaster.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?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 Symfony\Component\VarDumper\Caster;

use 
Symfony\Component\VarDumper\Cloner\Stub;

/**
 * Casts PDO related classes to array representation.
 *
 * @author Nicolas Grekas <p@tchwork.com>
 */
class PdoCaster
{
    private static 
$pdoAttributes = [
        
'CASE' => [
            \
PDO::CASE_LOWER => 'LOWER',
            \
PDO::CASE_NATURAL => 'NATURAL',
            \
PDO::CASE_UPPER => 'UPPER',
        ],
        
'ERRMODE' => [
            \
PDO::ERRMODE_SILENT => 'SILENT',
            \
PDO::ERRMODE_WARNING => 'WARNING',
            \
PDO::ERRMODE_EXCEPTION => 'EXCEPTION',
        ],
        
'TIMEOUT',
        
'PREFETCH',
        
'AUTOCOMMIT',
        
'PERSISTENT',
        
'DRIVER_NAME',
        
'SERVER_INFO',
        
'ORACLE_NULLS' => [
            \
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' => [
            \
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)
    {
        
$attr = [];
        
$errmode $c->getAttribute(\PDO::ATTR_ERRMODE);
        
$c->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

        foreach (
self::$pdoAttributes as $k => $v) {
            if (!isset(
$k[0])) {
                
$k $v;
                
$v = [];
            }

            try {
                
$attr[$k] = 'ERRMODE' === $k $errmode $c->getAttribute(\constant('PDO::ATTR_'.$k));
                if (
$v && isset($v[$attr[$k]])) {
                    
$attr[$k] = new ConstStub($v[$attr[$k]], $attr[$k]);
                }
            } catch (\
Exception $e) {
            }
        }
        if (isset(
$attr[$k 'STATEMENT_CLASS'][1])) {
            if (
$attr[$k][1]) {
                
$attr[$k][1] = new ArgsStub($attr[$k][1], '__construct'$attr[$k][0]);
            }
            
$attr[$k][0] = new ClassStub($attr[$k][0]);
        }

        
$prefix Caster::PREFIX_VIRTUAL;
        
$a += [
            
$prefix.'inTransaction' => method_exists($c'inTransaction'),
            
$prefix.'errorInfo' => $c->errorInfo(),
            
$prefix.'attributes' => new EnumStub($attr),
        ];

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

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

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

        return 
$a;
    }

    public static function 
castPdoStatement(\PDOStatement $c, array $aStub $stub$isNested)
    {
        
$prefix Caster::PREFIX_VIRTUAL;
        
$a[$prefix.'errorInfo'] = $c->errorInfo();

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

        return 
$a;
    }
}