13 abstract class Converter implements pq\ConverterInterface
17 function __construct(\pq\Types $types) {
18 $this->types = $types;
22 class HStoreConverter extends Converter
24 function convertTypes() {
25 return [ $this->types["hstore"]->oid ];
28 function convertFromString($string) {
29 return eval("return [$string];");
32 function convertToString($data) {
34 foreach ($data as $k => $v) {
36 $string .= sprintf("\"%s\"=>\"%s\",", addslashes($k), addslashes($v));
38 $string .= sprintf("\"%s\"=>NULL,", addslashes($k));
45 class IntVectorConverter extends Converter
47 function convertTypes() {
49 $this->types["int2vector"]->oid,
50 $this->types["oidvector"]->oid
54 function convertFromString($string) {
55 return array_map("intval", explode(" ", $string));
58 function convertToString($data) {
59 return implode(" ", $data);
63 class JSONConverter extends Converter
65 function convertTypes() {
66 return [ $this->types["json"]->oid ];
69 function convertFromString($string) {
70 return json_decode($string);
73 function convertToString($data) {
74 return json_encode($data);
78 $c = new pq\Connection(PQ_DSN);
79 $c->exec("CREATE EXTENSION IF NOT EXISTS hstore");
80 $t = new pq\Types($c);
82 $c->setConverter(new HStoreConverter($t));
83 $c->setConverter(new IntVectorConverter($t));
84 $c->setConverter(new JSONConverter($t));
86 $r = $c->execParams("SELECT \$1 as hs, \$2 as iv, \$3 as oids, \$4 as js",
99 2345124, 1431341, 1343423
104 "obj" => (object) array(
114 $t["int2vector"]->oid,
115 $t["oidvector"]->oid,
120 var_dump($r->fetchAll());
163 object(stdClass)#%d (3) {
167 object(stdClass)#%d (3) {