Current File : /home/tradevaly/www/phpmy/libraries/classes/Server/Plugin.php |
<?php
/**
* Server Plugin value object
*/
declare(strict_types=1);
namespace PhpMyAdmin\Server;
/**
* Server Plugin value object
*/
final class Plugin
{
/** @var string */
private $name;
/** @var string|null */
private $version;
/** @var string */
private $status;
/** @var string */
private $type;
/** @var string|null */
private $typeVersion;
/** @var string|null */
private $library;
/** @var string|null */
private $libraryVersion;
/** @var string|null */
private $author;
/** @var string|null */
private $description;
/** @var string */
private $license;
/** @var string|null */
private $loadOption;
/** @var string|null */
private $maturity;
/** @var string|null */
private $authVersion;
/**
* @param string $name Name of the plugin
* @param string|null $version Version from the plugin's general type descriptor
* @param string $status Plugin status
* @param string $type Type of plugin
* @param string|null $typeVersion Version from the plugin's type-specific descriptor
* @param string|null $library Plugin's shared object file name
* @param string|null $libraryVersion Version from the plugin's API interface
* @param string|null $author Author of the plugin
* @param string|null $description Description
* @param string $license Plugin's licence
* @param string|null $loadOption How the plugin was loaded
* @param string|null $maturity Plugin's maturity level
* @param string|null $authVersion Plugin's version as determined by the plugin author
*/
private function __construct(
string $name,
?string $version,
string $status,
string $type,
?string $typeVersion,
?string $library,
?string $libraryVersion,
?string $author,
?string $description,
string $license,
?string $loadOption,
?string $maturity,
?string $authVersion
) {
$this->name = $name;
$this->version = $version;
$this->status = $status;
$this->type = $type;
$this->typeVersion = $typeVersion;
$this->library = $library;
$this->libraryVersion = $libraryVersion;
$this->author = $author;
$this->description = $description;
$this->license = $license;
$this->loadOption = $loadOption;
$this->maturity = $maturity;
$this->authVersion = $authVersion;
}
/**
* @param array $state array with the properties
*/
public static function fromState(array $state): self
{
return new self(
$state['name'] ?? '',
$state['version'] ?? null,
$state['status'] ?? '',
$state['type'] ?? '',
$state['typeVersion'] ?? null,
$state['library'] ?? null,
$state['libraryVersion'] ?? null,
$state['author'] ?? null,
$state['description'] ?? null,
$state['license'] ?? '',
$state['loadOption'] ?? null,
$state['maturity'] ?? null,
$state['authVersion'] ?? null
);
}
/**
* @return array
*/
public function toArray(): array
{
return [
'name' => $this->getName(),
'version' => $this->getVersion(),
'status' => $this->getStatus(),
'type' => $this->getType(),
'type_version' => $this->getTypeVersion(),
'library' => $this->getLibrary(),
'library_version' => $this->getLibraryVersion(),
'author' => $this->getAuthor(),
'description' => $this->getDescription(),
'license' => $this->getLicense(),
'load_option' => $this->getLoadOption(),
'maturity' => $this->getMaturity(),
'auth_version' => $this->getAuthVersion(),
];
}
public function getName(): string
{
return $this->name;
}
public function getVersion(): ?string
{
return $this->version;
}
public function getStatus(): string
{
return $this->status;
}
public function getType(): string
{
return $this->type;
}
public function getTypeVersion(): ?string
{
return $this->typeVersion;
}
public function getLibrary(): ?string
{
return $this->library;
}
public function getLibraryVersion(): ?string
{
return $this->libraryVersion;
}
public function getAuthor(): ?string
{
return $this->author;
}
public function getDescription(): ?string
{
return $this->description;
}
public function getLicense(): string
{
return $this->license;
}
public function getLoadOption(): ?string
{
return $this->loadOption;
}
public function getMaturity(): ?string
{
return $this->maturity;
}
public function getAuthVersion(): ?string
{
return $this->authVersion;
}
}