bootstrap: more logging
[pharext/pharext.org] / app / bootstrap / model.php
1 <?php
2
3 namespace app;
4
5 require_once __DIR__."/config.php";
6 require_once __DIR__."/pq.php";
7
8 use Auryn\Injector;
9 use pq\Query\Executor;
10 use pq\Gateway\Table;
11 use SplSubject, SplObserver;
12
13 class QueryLogger extends Logger implements SplObserver
14 {
15 function update(SplSubject $executor) {
16 if (($result = $executor->getResult())) {
17 $query = $executor->getQuery();
18 $this->debug($query, [
19 "params" => $query->getParams(),
20 "result" => $result
21 ]);
22 }
23 }
24 }
25
26 /* @var $injector \Auryn\Injector */
27
28 $injector->prepare(Executor::class, function(Executor $executor, Injector $injector) {
29 $executor->attach(new QueryLogger($injector->make(Config::class), "query"));
30 });
31
32 foreach ([Model\Accounts::class, Model\Tokens::class, Model\Authorities::class, Model\Owners::class] as $class) {
33 $injector->prepare($class, function(Table $table, Injector $injector) {
34 $table->setQueryExecutor($injector->make(Executor::class));
35 });
36 }
37
38 \pq\Gateway\Table::$defaultResolver = function($table) use($injector) {
39 return $injector->make("app\\Model\\" . ucfirst($table));
40 };