Class yii\httpclient\debug\HttpClientPanel
| Inheritance | yii\httpclient\debug\HttpClientPanel » yii\debug\Panel | 
|---|---|
| Available since extension's version | 2.0 | 
| Source Code | https://github.com/yiisoft/yii2-httpclient/blob/master/src/debug/HttpClientPanel.php | 
Debugger panel that collects and displays HTTP requests performed.
Public Properties
| Property | Type | Description | Defined By | 
|---|---|---|---|
| $httpClient | yii\httpclient\Client | Note that the type of this property differs in getter and setter. | yii\httpclient\debug\HttpClientPanel | 
| $methods | array | This property is read-only. | yii\httpclient\debug\HttpClientPanel | 
| $types | array | This property is read-only. | yii\httpclient\debug\HttpClientPanel | 
Public Methods
| Method | Description | Defined By | 
|---|---|---|
| calculateTimings() | Calculates given request profile timings. | yii\httpclient\debug\HttpClientPanel | 
| getDetail() | yii\httpclient\debug\HttpClientPanel | |
| getHttpClient() | yii\httpclient\debug\HttpClientPanel | |
| getMethods() | Returns array request methods | yii\httpclient\debug\HttpClientPanel | 
| getName() | yii\httpclient\debug\HttpClientPanel | |
| getSummary() | yii\httpclient\debug\HttpClientPanel | |
| getTypes() | Returns array request types | yii\httpclient\debug\HttpClientPanel | 
| init() | yii\httpclient\debug\HttpClientPanel | |
| save() | yii\httpclient\debug\HttpClientPanel | |
| setHttpClient() | yii\httpclient\debug\HttpClientPanel | 
Protected Methods
| Method | Description | Defined By | 
|---|---|---|
| getModels() | Returns an array of models that represents logs of the current request. | yii\httpclient\debug\HttpClientPanel | 
| getRequestMethod() | Returns HTTP request method. | yii\httpclient\debug\HttpClientPanel | 
| getRequestType() | Returns request type. | yii\httpclient\debug\HttpClientPanel | 
| getTotalRequestTime() | Returns total request time. | yii\httpclient\debug\HttpClientPanel | 
Property Details
Note that the type of this property differs in getter and setter. See getHttpClient() and setHttpClient() for details.
Method Details
Calculates given request profile timings.
| public array calculateTimings ( ) | ||
| return | array | 
                                 Timings [token, category, timestamp, traces, nesting level, elapsed time]  | 
                        
|---|---|---|
                public function calculateTimings()
{
    if ($this->_timings === null) {
        $this->_timings = Yii::getLogger()->calculateTimings(isset($this->data['messages']) ? $this->data['messages'] : []);
    }
    return $this->_timings;
}
            
        
| public void getDetail ( ) | 
                public function getDetail()
{
    $searchModel = new SearchModel();
    $dataProvider = $searchModel->search(Yii::$app->request->getQueryParams(), $this->getModels());
    return Yii::$app->view->render('@yii/httpclient/debug/views/detail', [
        'panel' => $this,
        'dataProvider' => $dataProvider,
        'searchModel' => $searchModel,
    ]);
}
            
        
| public yii\httpclient\Client getHttpClient ( ) | ||
| throws | \yii\base\InvalidConfigException | |
|---|---|---|
                public function getHttpClient()
{
    if (!is_object($this->_httpClient)) {
        $this->_httpClient = Instance::ensure($this->_httpClient, Client::className());
    }
    return $this->_httpClient;
}
            
        Returns array request methods
| public array getMethods ( ) | 
                public function getMethods()
{
    return array_reduce(
        $this->_models,
        function ($result, $item) {
            $result[$item['method']] = $item['method'];
            return $result;
        },
        []
    );
}
            
        Returns an array of models that represents logs of the current request.
Can be used with data providers such as \yii\data\ArrayDataProvider.
| protected array getModels ( ) | ||
| return | array | 
                                 Models  | 
                        
|---|---|---|
                protected function getModels()
{
    if ($this->_models === null) {
        $this->_models = [];
        $timings = $this->calculateTimings();
        foreach ($timings as $seq => $dbTiming) {
            $this->_models[] = [
                'method' => $this->getRequestMethod($dbTiming['info']),
                'type' => $this->getRequestType($dbTiming['category']),
                'request' => $dbTiming['info'],
                'duration' => ($dbTiming['duration'] * 1000), // in milliseconds
                'trace' => $dbTiming['trace'],
                'timestamp' => ($dbTiming['timestamp'] * 1000), // in milliseconds
                'seq' => $seq,
            ];
        }
    }
    return $this->_models;
}
            
        Returns HTTP request method.
| protected string getRequestMethod ( $timing ) | ||
| $timing | string | 
                                Timing procedure string  | 
                        
| return | string | 
                                 Request method such as GET, POST, PUT, etc.  | 
                        
|---|---|---|
                protected function getRequestMethod($timing)
{
    $timing = ltrim($timing);
    preg_match('/^([a-zA-z]*)/', $timing, $matches);
    return count($matches) ? $matches[0] : '';
}
            
        Returns request type.
| protected string getRequestType ( $category ) | ||
| $category | string | |
| return | string | 
                                 Request type such as 'normal', 'batch'  | 
                        
|---|---|---|
                protected function getRequestType($category)
{
    return (stripos($category, '::batchSend') === false) ? 'normal' : 'batch';
}
            
        
| public void getSummary ( ) | 
                public function getSummary()
{
    $timings = $this->calculateTimings();
    $queryCount = count($timings);
    if ($queryCount === 0) {
        return '';
    }
    $queryTime = number_format($this->getTotalRequestTime($timings) * 1000) . ' ms';
    return Yii::$app->view->render('@yii/httpclient/debug/views/summary', [
        'timings' => $this->calculateTimings(),
        'panel' => $this,
        'queryCount' => $queryCount,
        'queryTime' => $queryTime,
    ]);
}
            
        Returns total request time.
| protected integer getTotalRequestTime ( $timings ) | ||
| $timings | array | |
| return | integer | 
                                 Total time  | 
                        
|---|---|---|
                protected function getTotalRequestTime($timings)
{
    $queryTime = 0;
    foreach ($timings as $timing) {
        $queryTime += $timing['duration'];
    }
    return $queryTime;
}
            
        Returns array request types
| public array getTypes ( ) | 
                public function getTypes()
{
    return [
        'normal' => 'Normal',
        'batch' => 'Batch',
    ];
}
            
        
| public void init ( ) | 
                public function init()
{
    $this->actions['request-execute'] = [
        'class' => 'yii\httpclient\debug\RequestExecuteAction',
        'panel' => $this,
    ];
}
            
        
| public void save ( ) | 
                public function save()
{
    $target = $this->module->logTarget;
    $messages = $target->filterMessages($target->messages, Logger::LEVEL_PROFILE, [
        'yii\httpclient\Transport::*',
        'yii\httpclient\CurlTransport::*',
        'yii\httpclient\StreamTransport::*',
    ]);
    return ['messages' => $messages];
}
            
        
| public void setHttpClient ( $httpClient ) | ||
| $httpClient | array | |
                public function setHttpClient($httpClient)
{
    $this->_httpClient = $httpClient;
}