我有序列化的代码PDOException,通过网络发送,然后稍后反序列化.当我反序列化它时,该$code属性似乎丢失了.对象的其余部分显示不变.
我的代码是针对PostgreSQL数据库运行的.使用以下DDL:
CREATE TABLE test (
id INTEGER
);
Run Code Online (Sandbox Code Playgroud)
使用以下代码重现我的问题(替换您自己的PostgeSQL连接值):
<?php
$dsn = "pgsql: dbname=postgres;host=/var/run/postgresql;port=5432";
$user = "postgres";
$password = "";
try
{
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$res = $pdo->exec("INSERT INTO test (id) VALUES (999999999999999)");
}
catch (PDOException $e)
{
var_dump((array) $e);
print "\n";
print $e->getCode();
print "\n";
$s = serialize($e);
print $s;
print "\n";
$d = unserialize($s);
var_dump((array) $d);
print "\n";
print $d->getCode();
print "\n";
print serialize($e->getCode());
print "\n";
}
?> …Run Code Online (Sandbox Code Playgroud)