-
Notifications
You must be signed in to change notification settings - Fork 182
Expand file tree
/
Copy pathCakePHPIntegration.php
More file actions
73 lines (62 loc) · 2.43 KB
/
Copy pathCakePHPIntegration.php
File metadata and controls
73 lines (62 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
namespace DDTrace\Integrations\CakePHP;
use DDTrace\Integrations\CakePHP\V2\CakePHPIntegrationLoader as CakePHPIntegrationLoaderV2;
use DDTrace\Integrations\CakePHP\V3\CakePHPIntegrationLoader as CakePHPIntegrationLoaderV3;
use DDTrace\Integrations\Integration;
use DDTrace\Tag;
class CakePHPIntegration extends Integration
{
const NAME = 'cakephp';
public static $appName;
public static $rootSpan;
public static $setRootSpanInfoFn;
public static $handleExceptionFn;
public static $setStatusCodeFn;
public static $parseRouteFn;
public static function init(): int
{
self::$setRootSpanInfoFn = static function () {
$rootSpan = \DDTrace\root_span();
if ($rootSpan === null) {
return;
}
self::$appName = \ddtrace_config_app_name(CakePHPIntegration::NAME);
$rootSpan->service = self::$appName;
Integration::tagFrameworkServiceSource($rootSpan, CakePHPIntegration::NAME);
if ('cli' === PHP_SAPI) {
$rootSpan->name = 'cakephp.console';
$rootSpan->resource = !empty($_SERVER['argv'][1])
? 'cake_console ' . $_SERVER['argv'][1]
: 'cake_console';
} else {
$rootSpan->name = 'cakephp.request';
$rootSpan->meta[Tag::SPAN_KIND] = 'server';
}
$rootSpan->meta[Tag::COMPONENT] = CakePHPIntegration::NAME;
};
self::$handleExceptionFn = static function ($This, $scope, $args) {
$rootSpan = \DDTrace\root_span();
if ($rootSpan !== null) {
$rootSpan->exception = $args[0];
}
};
self::$setStatusCodeFn = static function ($This, $scope, $args, $retval) {
$rootSpan = \DDTrace\root_span();
if ($rootSpan) {
$rootSpan->meta[Tag::HTTP_STATUS_CODE] = $retval;
}
};
self::$parseRouteFn = static function ($app, $appClass, $args, $retval) {
if (!$retval) {
return;
}
$rootSpan = \DDTrace\root_span();
if ($rootSpan !== null) {
$rootSpan->meta[Tag::HTTP_ROUTE] = $app->template;
}
};
return class_exists('Cake\Http\Server') // Only exists in V3+
? CakePHPIntegrationLoaderV3::load()
: CakePHPIntegrationLoaderV2::load();
}
}