| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 | <?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 = [];    private $ip;    private $method;    private $url;    private $time;    private $statusCode;    /**     * @var Profile     */    private $parent;    /**     * @var Profile[]     */    private $children = [];    public function __construct(string $token)    {        $this->token = $token;    }    public function setToken(string $token)    {        $this->token = $token;    }    /**     * Gets the token.     *     * @return string     */    public function getToken()    {        return $this->token;    }    /**     * Sets the parent token.     */    public function setParent(self $parent)    {        $this->parent = $parent;    }    /**     * Returns the parent profile.     *     * @return self|null     */    public function getParent()    {        return $this->parent;    }    /**     * Returns the parent token.     *     * @return string|null     */    public function getParentToken()    {        return $this->parent ? $this->parent->getToken() : null;    }    /**     * Returns the IP.     *     * @return string|null     */    public function getIp()    {        return $this->ip;    }    public function setIp(?string $ip)    {        $this->ip = $ip;    }    /**     * Returns the request method.     *     * @return string|null     */    public function getMethod()    {        return $this->method;    }    public function setMethod(string $method)    {        $this->method = $method;    }    /**     * Returns the URL.     *     * @return string|null     */    public function getUrl()    {        return $this->url;    }    public function setUrl(?string $url)    {        $this->url = $url;    }    /**     * @return int     */    public function getTime()    {        return $this->time ?? 0;    }    public function setTime(int $time)    {        $this->time = $time;    }    public function setStatusCode(int $statusCode)    {        $this->statusCode = $statusCode;    }    /**     * @return int|null     */    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 = [];        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.     *     * @return DataCollectorInterface     *     * @throws \InvalidArgumentException if the collector does not exist     */    public function getCollector(string $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 = [];        foreach ($collectors as $collector) {            $this->addCollector($collector);        }    }    /**     * Adds a Collector.     */    public function addCollector(DataCollectorInterface $collector)    {        $this->collectors[$collector->getName()] = $collector;    }    /**     * @return bool     */    public function hasCollector(string $name)    {        return isset($this->collectors[$name]);    }    /**     * @return array     */    public function __sleep()    {        return ['token', 'parent', 'children', 'collectors', 'ip', 'method', 'url', 'time', 'statusCode'];    }}
 |