Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. PdoCaster.php

class PdoCaster

Casts PDO related classes to array representation.

@author Nicolas Grekas <p@tchwork.com>

@final

Hierarchy

  • class \Symfony\Component\VarDumper\Caster\PdoCaster

Expanded class hierarchy of PdoCaster

File

vendor/symfony/var-dumper/Caster/PdoCaster.php, line 23

Namespace

Symfony\Component\VarDumper\Caster
View source
class PdoCaster {
    private const PDO_ATTRIBUTES = [
        '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 $a, Stub $stub, bool $isNested) : array {
        $attr = [];
        $errmode = $c->getAttribute(\PDO::ATTR_ERRMODE);
        $c->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
        foreach (self::PDO_ATTRIBUTES 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) {
            }
        }
        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 $a, Stub $stub, bool $isNested) : array {
        $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;
    }

}

Members

Title Sort descending Modifiers Object type Summary
PdoCaster::castPdo public static function
PdoCaster::castPdoStatement public static function
PdoCaster::PDO_ATTRIBUTES private constant

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal