123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 |
- <?php
-
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
- namespace Symfony\Component\HttpKernel\Profiler;
-
- use Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface;
-
- /**
- * Profile.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
- class Profile
- {
- private $token;
-
- /**
- * @var DataCollectorInterface[]
- */
- private $collectors = array();
-
- private $ip;
- private $method;
- private $url;
- private $time;
- private $statusCode;
-
- /**
- * @var Profile
- */
- private $parent;
-
- /**
- * @var Profile[]
- */
- private $children = array();
-
- public function __construct(string $token)
- {
- $this->token = $token;
- }
-
- /**
- * Sets the token.
- *
- * @param string $token The token
- */
- public function setToken($token)
- {
- $this->token = $token;
- }
-
- /**
- * Gets the token.
- *
- * @return string The token
- */
- public function getToken()
- {
- return $this->token;
- }
-
- /**
- * Sets the parent token.
- */
- public function setParent(self $parent)
- {
- $this->parent = $parent;
- }
-
- /**
- * Returns the parent profile.
- *
- * @return self
- */
- public function getParent()
- {
- return $this->parent;
- }
-
- /**
- * Returns the parent token.
- *
- * @return null|string The parent token
- */
- public function getParentToken()
- {
- return $this->parent ? $this->parent->getToken() : null;
- }
-
- /**
- * Returns the IP.
- *
- * @return string The IP
- */
- public function getIp()
- {
- return $this->ip;
- }
-
- /**
- * Sets the IP.
- *
- * @param string $ip
- */
- public function setIp($ip)
- {
- $this->ip = $ip;
- }
-
- /**
- * Returns the request method.
- *
- * @return string The request method
- */
- public function getMethod()
- {
- return $this->method;
- }
-
- public function setMethod($method)
- {
- $this->method = $method;
- }
-
- /**
- * Returns the URL.
- *
- * @return string The URL
- */
- public function getUrl()
- {
- return $this->url;
- }
-
- public function setUrl($url)
- {
- $this->url = $url;
- }
-
- /**
- * Returns the time.
- *
- * @return int The time
- */
- public function getTime()
- {
- if (null === $this->time) {
- return 0;
- }
-
- return $this->time;
- }
-
- /**
- * @param int $time The time
- */
- public function setTime($time)
- {
- $this->time = $time;
- }
-
- /**
- * @param int $statusCode
- */
- public function setStatusCode($statusCode)
- {
- $this->statusCode = $statusCode;
- }
-
- /**
- * @return int
- */
- public function getStatusCode()
- {
- return $this->statusCode;
- }
-
- /**
- * Finds children profilers.
- *
- * @return self[]
- */
- public function getChildren()
- {
- return $this->children;
- }
-
- /**
- * Sets children profiler.
- *
- * @param Profile[] $children
- */
- public function setChildren(array $children)
- {
- $this->children = array();
- foreach ($children as $child) {
- $this->addChild($child);
- }
- }
-
- /**
- * Adds the child token.
- */
- public function addChild(self $child)
- {
- $this->children[] = $child;
- $child->setParent($this);
- }
-
- public function getChildByToken(string $token): ?self
- {
- foreach ($this->children as $child) {
- if ($token === $child->getToken()) {
- return $child;
- }
- }
-
- return null;
- }
-
- /**
- * Gets a Collector by name.
- *
- * @param string $name A collector name
- *
- * @return DataCollectorInterface A DataCollectorInterface instance
- *
- * @throws \InvalidArgumentException if the collector does not exist
- */
- public function getCollector($name)
- {
- if (!isset($this->collectors[$name])) {
- throw new \InvalidArgumentException(sprintf('Collector "%s" does not exist.', $name));
- }
-
- return $this->collectors[$name];
- }
-
- /**
- * Gets the Collectors associated with this profile.
- *
- * @return DataCollectorInterface[]
- */
- public function getCollectors()
- {
- return $this->collectors;
- }
-
- /**
- * Sets the Collectors associated with this profile.
- *
- * @param DataCollectorInterface[] $collectors
- */
- public function setCollectors(array $collectors)
- {
- $this->collectors = array();
- foreach ($collectors as $collector) {
- $this->addCollector($collector);
- }
- }
-
- /**
- * Adds a Collector.
- */
- public function addCollector(DataCollectorInterface $collector)
- {
- $this->collectors[$collector->getName()] = $collector;
- }
-
- /**
- * Returns true if a Collector for the given name exists.
- *
- * @param string $name A collector name
- *
- * @return bool
- */
- public function hasCollector($name)
- {
- return isset($this->collectors[$name]);
- }
-
- public function __sleep()
- {
- return array('token', 'parent', 'children', 'collectors', 'ip', 'method', 'url', 'time', 'statusCode');
- }
- }
|