[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <[email protected]> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12 namespace Symfony\Component\VarDumper\Caster; 13 14 use Symfony\Component\VarDumper\Cloner\Stub; 15 16 /** 17 * Casts PDO related classes to array representation. 18 * 19 * @author Nicolas Grekas <[email protected]> 20 * 21 * @final 22 */ 23 class PdoCaster 24 { 25 private const PDO_ATTRIBUTES = [ 26 'CASE' => [ 27 \PDO::CASE_LOWER => 'LOWER', 28 \PDO::CASE_NATURAL => 'NATURAL', 29 \PDO::CASE_UPPER => 'UPPER', 30 ], 31 'ERRMODE' => [ 32 \PDO::ERRMODE_SILENT => 'SILENT', 33 \PDO::ERRMODE_WARNING => 'WARNING', 34 \PDO::ERRMODE_EXCEPTION => 'EXCEPTION', 35 ], 36 'TIMEOUT', 37 'PREFETCH', 38 'AUTOCOMMIT', 39 'PERSISTENT', 40 'DRIVER_NAME', 41 'SERVER_INFO', 42 'ORACLE_NULLS' => [ 43 \PDO::NULL_NATURAL => 'NATURAL', 44 \PDO::NULL_EMPTY_STRING => 'EMPTY_STRING', 45 \PDO::NULL_TO_STRING => 'TO_STRING', 46 ], 47 'CLIENT_VERSION', 48 'SERVER_VERSION', 49 'STATEMENT_CLASS', 50 'EMULATE_PREPARES', 51 'CONNECTION_STATUS', 52 'STRINGIFY_FETCHES', 53 'DEFAULT_FETCH_MODE' => [ 54 \PDO::FETCH_ASSOC => 'ASSOC', 55 \PDO::FETCH_BOTH => 'BOTH', 56 \PDO::FETCH_LAZY => 'LAZY', 57 \PDO::FETCH_NUM => 'NUM', 58 \PDO::FETCH_OBJ => 'OBJ', 59 ], 60 ]; 61 62 public static function castPdo(\PDO $c, array $a, Stub $stub, bool $isNested) 63 { 64 $attr = []; 65 $errmode = $c->getAttribute(\PDO::ATTR_ERRMODE); 66 $c->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); 67 68 foreach (self::PDO_ATTRIBUTES as $k => $v) { 69 if (!isset($k[0])) { 70 $k = $v; 71 $v = []; 72 } 73 74 try { 75 $attr[$k] = 'ERRMODE' === $k ? $errmode : $c->getAttribute(\constant('PDO::ATTR_'.$k)); 76 if ($v && isset($v[$attr[$k]])) { 77 $attr[$k] = new ConstStub($v[$attr[$k]], $attr[$k]); 78 } 79 } catch (\Exception $e) { 80 } 81 } 82 if (isset($attr[$k = 'STATEMENT_CLASS'][1])) { 83 if ($attr[$k][1]) { 84 $attr[$k][1] = new ArgsStub($attr[$k][1], '__construct', $attr[$k][0]); 85 } 86 $attr[$k][0] = new ClassStub($attr[$k][0]); 87 } 88 89 $prefix = Caster::PREFIX_VIRTUAL; 90 $a += [ 91 $prefix.'inTransaction' => method_exists($c, 'inTransaction'), 92 $prefix.'errorInfo' => $c->errorInfo(), 93 $prefix.'attributes' => new EnumStub($attr), 94 ]; 95 96 if ($a[$prefix.'inTransaction']) { 97 $a[$prefix.'inTransaction'] = $c->inTransaction(); 98 } else { 99 unset($a[$prefix.'inTransaction']); 100 } 101 102 if (!isset($a[$prefix.'errorInfo'][1], $a[$prefix.'errorInfo'][2])) { 103 unset($a[$prefix.'errorInfo']); 104 } 105 106 $c->setAttribute(\PDO::ATTR_ERRMODE, $errmode); 107 108 return $a; 109 } 110 111 public static function castPdoStatement(\PDOStatement $c, array $a, Stub $stub, bool $isNested) 112 { 113 $prefix = Caster::PREFIX_VIRTUAL; 114 $a[$prefix.'errorInfo'] = $c->errorInfo(); 115 116 if (!isset($a[$prefix.'errorInfo'][1], $a[$prefix.'errorInfo'][2])) { 117 unset($a[$prefix.'errorInfo']); 118 } 119 120 return $a; 121 } 122 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |