getConnection(); $exec->setConnection(new Connection(PQ_TEST_DSN)); $exec->execute(new Writer($sql, $params), function(){}); $exec->setConnection($conn); } class QueryLogger implements SplObserver { protected $fp; function __construct($logfile = null) { if (!isset($logfile)) { $logfile = __DIR__."/query.log"; } if (!$this->fp = @fopen($logfile, "a")) { throw new RuntimeException(error_get_last()["message"]); } } function __destruct() { if (is_resource($this->fp)) { fclose($this->fp); } } function update(SplSubject $executor) { $result = $executor->getResult(); if (isset($result)) { fprintf($this->fp, "[%s] R %s\n", date_create()->format("Y-m-d H:i:s"), json_encode($result)); } elseif (($query = $executor->getQuery())) { fprintf($this->fp, "[%s] Q %s %% %s\n", date_create()->format("Y-m-d H:i:s"), preg_replace("/\s+/", " ", $query), json_encode($query->getParams())); } } } class TestModel implements JsonSerializable { private $id, $created, $counter, $number, $data, $list, $prop; function jsonSerialize() { return get_object_vars($this); } /** * @param Mapper $mapper * @return MapInterface */ static function mapAs(Mapper $mapper) { return new Map( __CLASS__, new Table("test"), $mapper->mapField("id"), $mapper->mapField("created"), $mapper->mapField("counter"), $mapper->mapField("number"), $mapper->mapField("data"), $mapper->mapField("list"), $mapper->mapField("prop") ); } }