2015-08-17 17:00:26 -07:00
< ? 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 ();
/**
* Constructor .
*
* @ param string $token The token
*/
public function __construct ( $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 .
*
2017-02-02 16:28:38 -08:00
* @ param Profile $parent
2015-08-17 17:00:26 -07:00
*/
public function setParent ( Profile $parent )
{
$this -> parent = $parent ;
}
/**
* Returns the parent profile .
*
2017-02-02 16:28:38 -08:00
* @ return self
2015-08-17 17:00:26 -07:00
*/
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 string The time
*/
public function getTime ()
{
if ( null === $this -> time ) {
return 0 ;
}
return $this -> 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 .
*
2017-02-02 16:28:38 -08:00
* @ return self []
2015-08-17 17:00:26 -07:00
*/
public function getChildren ()
{
return $this -> children ;
}
/**
* Sets children profiler .
*
2017-02-02 16:28:38 -08:00
* @ param Profile [] $children
2015-08-17 17:00:26 -07:00
*/
public function setChildren ( array $children )
{
$this -> children = array ();
foreach ( $children as $child ) {
$this -> addChild ( $child );
}
}
/**
* Adds the child token .
*
2017-02-02 16:28:38 -08:00
* @ param Profile $child
2015-08-17 17:00:26 -07:00
*/
public function addChild ( Profile $child )
{
$this -> children [] = $child ;
$child -> setParent ( $this );
}
/**
* 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 .
*
* @ param DataCollectorInterface $collector A DataCollectorInterface instance
*/
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' );
}
}