1 | <?php |
||
11 | class Transaction |
||
12 | { |
||
13 | private $instance; |
||
14 | private $config; |
||
15 | private $formatter; |
||
16 | |||
17 | 12 | public function __construct($instance, TransactionConfig $config) |
|
31 | |||
32 | public function setFormatter(FormatterInterface $formatter) |
||
36 | |||
37 | 10 | public function __call($name, $arguments) |
|
38 | { |
||
39 | 10 | $this->transactionStart($name, $arguments); |
|
40 | |||
41 | try { |
||
42 | 10 | return call_user_func_array([$this->instance, $name], $arguments); |
|
43 | 3 | } catch (\Exception $genericException) { |
|
44 | 3 | $this->transactionFail($name, $genericException); |
|
45 | 3 | throw $genericException; |
|
46 | } finally { |
||
47 | 10 | $this->transactionEnd($name); |
|
48 | } |
||
49 | } |
||
50 | |||
51 | 10 | private function addNewRelicParameter($customParameters) |
|
52 | { |
||
53 | 10 | foreach ($customParameters as $key => $value) { |
|
54 | 2 | if (null === $value || is_scalar($value)) { |
|
55 | 2 | newrelic_add_custom_parameter($key, $value); |
|
56 | } else { |
||
57 | newrelic_add_custom_parameter($key, @json_encode($value)); |
||
58 | } |
||
59 | } |
||
60 | 10 | } |
|
61 | |||
62 | 10 | private function transactionStart($name, $arguments) |
|
74 | |||
75 | 10 | private function shouldBeMonitored($name) |
|
79 | |||
80 | 10 | private function transactionEnd($name) |
|
88 | |||
89 | 3 | private function transactionFail($name, \Exception $genericException) |
|
97 | } |
||
98 |