[英]How to clone PDO object safely?
我嘗試使用$pdo2 = clone $pdo
克隆PDO實例,但是在某些PHP版本中出現意外行為:
這是重現該問題的代碼:
$pdo1 = new \PDO('sqlite::memory:');
$pdo1->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
echo "PDO 1 is OK\n";
$pdo2 = clone $pdo1;
$pdo2->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_WARNING);
echo "PDO 2 is OK\n";
echo $pdo1->getAttribute(\PDO::ATTR_ERRMODE) === $pdo2->getAttribute(\PDO::ATTR_ERRMODE)
? "❌ The attribute IS changed\n"
: "✅ The attribute IS NOT changed\n";
有什么方法可以制作PDO對象的獨立副本,或者至少僅復制dns,用戶名和密碼?
為什么需要克隆PDO實例:我需要保持PDO實例隔離以實現目標:
無法安全地克隆PDO對象。 您永遠不應該有這樣的想法,因為這沒有任何意義:
因此,如果您想要一個隔離的PDO實例,只需創建它即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.