<?php
trait PPConnection {
 protected function createPdo($dsn,$user,$password,$params){$db=$this->getConfig('prefix')==='yoshop_'?'AI':'ZHCT';pp_need($dsn===pp_dsn($db)&&$user===getenv('POC_'.$db.'_USER')&&$password===getenv('POC_'.$db.'_PASSWORD')&&!isset($params[1002]),'Exact original AI two native connections');$p=new PPPDO($dsn,$user,$password,$params);$p->db=$db;pp_need($p->setAttribute(PDO::ATTR_STATEMENT_CLASS,[PPStatement::class,[$db]]),'Original native statement recorder');return $p;}
 public function getPDOStatement(string $sql,array $bind=[],bool $master=false,bool $procedure=false):PDOStatement{$db=$this->getConfig('prefix')==='yoshop_'?'AI':'ZHCT';PPGate::plan($db,$sql,$bind);pp_event(['event'=>'original-framework-bind-plan','db'=>$db,'SQL'=>$sql,'binds'=>$bind,'procedure'=>$procedure]);return parent::getPDOStatement($sql,$bind,$master,$procedure);}
}
class PPMysql extends \think\db\connector\Mysql {use PPConnection;public function getBuilderClass():string{return \think\db\builder\Mysql::class;}}
class PPDm extends \app\common\database\Dm {use PPConnection;}
