153 lines
3.0 KiB
PHP
153 lines
3.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types = 1);
|
|
|
|
namespace Williamdes\MariaDBMySQLKBS;
|
|
|
|
use stdClass;
|
|
use JsonSerializable;
|
|
|
|
class KBEntry extends stdClass implements JsonSerializable
|
|
{
|
|
/**
|
|
* The name of the variable
|
|
*
|
|
* @var string
|
|
*/
|
|
private $name;
|
|
|
|
/**
|
|
* Type of variable
|
|
*
|
|
* @var string|null
|
|
*/
|
|
private $type = null;
|
|
|
|
/**
|
|
* Is dynamic ?
|
|
*
|
|
* @var bool|null
|
|
*/
|
|
private $dynamic = null;
|
|
|
|
/**
|
|
* Documentations
|
|
*
|
|
* @var KBDocumentation[]
|
|
*/
|
|
private $docs = null;
|
|
|
|
/**
|
|
* Create a KBEntry object
|
|
*
|
|
* @param string $name The name of the variable
|
|
* @param string|null $type Type of variable
|
|
* @param bool|null $dynamic Is dynamic ?
|
|
*/
|
|
public function __construct(string $name, ?string $type, ?bool $dynamic)
|
|
{
|
|
$this->name = $name;
|
|
if ($type !== null) {
|
|
$this->type = $type;
|
|
}
|
|
if ($dynamic !== null) {
|
|
$this->dynamic = $dynamic;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get the variable name
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getName(): string
|
|
{
|
|
return $this->name;
|
|
}
|
|
|
|
/**
|
|
* Is the variable dynamic
|
|
*
|
|
* @return bool|null
|
|
*/
|
|
public function isDynamic(): ?bool
|
|
{
|
|
return $this->dynamic;
|
|
}
|
|
|
|
/**
|
|
* Get the variable type
|
|
*
|
|
* @return string|null
|
|
*/
|
|
public function getType(): ?string
|
|
{
|
|
return $this->type;
|
|
}
|
|
|
|
/**
|
|
* Variable has documentations
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function hasDocumentations(): bool
|
|
{
|
|
if ($this->docs === null) {
|
|
return false;
|
|
} else {
|
|
return count($this->docs) > 0;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get all documentations
|
|
*
|
|
* @return KBDocumentation[]
|
|
*/
|
|
public function getDocumentations(): array
|
|
{
|
|
return $this->docs;
|
|
}
|
|
|
|
/**
|
|
* Add documentation link
|
|
*
|
|
* @param string $url The URL
|
|
* @param string|null $anchor The anchor
|
|
* @return KBDocumentation
|
|
*/
|
|
public function addDocumentation(string $url, ?string $anchor = null): KBDocumentation
|
|
{
|
|
$this->url = $url;
|
|
if ($this->docs === null) {
|
|
$this->docs = [];
|
|
}
|
|
$kbd = new KBDocumentation($url, $anchor);
|
|
$this->docs[] = $kbd;
|
|
return $kbd;
|
|
}
|
|
|
|
/**
|
|
* Used for json_encode function
|
|
* This can seem useless, do not remove it.
|
|
*
|
|
* @return array<string,KBDocumentation[]|bool|string>
|
|
*/
|
|
public function jsonSerialize(): array
|
|
{
|
|
$outObj = [];
|
|
$outObj['name'] = $this->name;
|
|
if ($this->type !== null) {
|
|
$outObj['type'] = $this->type;
|
|
}
|
|
if ($this->dynamic !== null) {
|
|
$outObj['dynamic'] = $this->dynamic;
|
|
}
|
|
if ($this->docs !== null) {
|
|
$outObj['docs'] = $this->docs;
|
|
}
|
|
return $outObj;
|
|
}
|
|
|
|
}
|