for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace ZoiloMora\ElasticAPM\Events\Common\System;
use ZoiloMora\ElasticAPM\Utils\ControlGroups;
use ZoiloMora\ElasticAPM\Helper\Encoding;
final class Container implements \JsonSerializable
{
/**
* Container ID
*
* @var string
*/
private $id;
* @param string $id
public function __construct($id)
$this->assertId($id);
$this->id = $id;
}
* @param mixed $id
* @return void
* @throws \InvalidArgumentException
private function assertId($id)
if (null !== $id && false === is_string($id)) {
throw new \InvalidArgumentException('[id] must be one of these types: string or null.');
* @return string
public function id()
return $this->id;
* @return Container
public static function discover()
return new self(
ControlGroups::instance()->containerId()
);
* @return array|null
public function jsonSerialize()
if (null === $this->id) {
return null;
return [
'id' => Encoding::keywordField($this->id),
];