flush
[m6w6/pq-gateway] / lib / pq / Query / Executor.php
1 <?php
2
3 namespace pq\Query;
4
5 /**
6 * A synchronous query executor
7 */
8 class Executor implements ExecutorInterface
9 {
10 /**
11 * @var \pq\Connection
12 */
13 protected $conn;
14
15 /**
16 * Create a synchronous query executor
17 * @param \pq\Connection $conn
18 */
19 function __construct(\pq\Connection $conn) {
20 $this->conn = $conn;
21 }
22
23 /**
24 * @inheritdoc
25 * @return \pq\Connection
26 */
27 function getConnection() {
28 return $this->conn;
29 }
30
31 /**
32 * @inheritdoc
33 * @param \pq\Connection $conn
34 * @return \pq\Query\Executor
35 */
36 function setConnection(\pq\Connection $conn) {
37 $this->conn = $conn;
38 return $this;
39 }
40
41 /**
42 * Execute the query synchronously through \pq\Connection::execParams()
43 * @param \pq\Query\WriterInterface $query
44 * @param callable $callback
45 * @return mixed
46 */
47 function execute(WriterInterface $query, callable $callback) {
48 return $callback($this->getConnection()->execParams($query, $query->getParams(), $query->getTypes()));
49 }
50 }