%PDF- %PDF-
| Direktori : /var/www/projetos/suporte.iigd.com.br/src/Debug/ |
| Current File : /var/www/projetos/suporte.iigd.com.br/src/Debug/ProfilerSection.php |
<?php
/**
* ---------------------------------------------------------------------
*
* GLPI - Gestionnaire Libre de Parc Informatique
*
* http://glpi-project.org
*
* @copyright 2015-2024 Teclib' and contributors.
* @copyright 2003-2014 by the INDEPNET Development Team.
* @licence https://www.gnu.org/licenses/gpl-3.0.html
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* ---------------------------------------------------------------------
*/
namespace Glpi\Debug;
use Ramsey\Uuid\Uuid;
final class ProfilerSection
{
private string $id;
private ?string $parent_id;
private string $category;
private string $name;
private int $start;
private int $end;
public function __construct(string $category, string $name, $start, ?string $parent_id = null, ?string $id = null)
{
$this->id = $id ?? Uuid::uuid4()->toString();
$this->parent_id = $parent_id;
$this->category = $category;
$this->name = $name;
$this->start = (int)$start;
}
public function end($time): void
{
$this->end = (int)$time;
}
public function getID(): string
{
return $this->id;
}
public function getParentID(): ?string
{
return $this->parent_id;
}
public function getStart(): int
{
return $this->start;
}
public function getEnd(): int
{
return $this->end;
}
public function getCategory(): string
{
return $this->category;
}
public function getName(): string
{
return $this->name;
}
public function getDuration(): int
{
$end = $this->end ?? (int)(microtime(true) * 1000);
return $end - $this->start;
}
public function isFinished(): bool
{
return $this->end !== null;
}
public function toArray(): array
{
return [
'id' => $this->id,
'parent_id' => $this->parent_id,
'category' => $this->category,
'name' => $this->name,
'start' => $this->start,
'end' => $this->end,
];
}
public static function fromArray(array $array): self
{
$section = new self($array['category'], $array['name'], $array['start'], $array['parent_id'], $array['id']);
$section->end($array['end']);
return $section;
}
}