php_components_pack/tests/data/MenuItemModel.php
2025-07-11 19:40:30 +03:00

100 lines
2.6 KiB
PHP

<?php
namespace goodboyalex\php_components_pack\tests\data;
use Exception;
use goodboyalex\php_components_pack\classes\ClassMapper;
use goodboyalex\php_components_pack\extensions\GUIDExtension;
use goodboyalex\php_components_pack\interfaces\IDuplicated;
/**
* Модель элемента меню.
*
* @author Александр Бабаев
* @package freecms
* @version 0.1
* @since 0.1
*/
final class MenuItemModel implements IDuplicated
{
/**
* @var string $Id Идентификатор элемента.
*/
public string $Id {
get {
return $this->Id ?? GUIDExtension::GUIDEmpty;
}
set {
// Проверка идентификатора
if (!GUIDExtension::Validate($value))
// - исключение
throw new Exception("Неверный идентификатор (GUID)");
// Установка идентификатора
$this->Id = $value;
}
}
/**
* @var string $Name Имя элемента.
*/
public string $Name;
/**
* @var string|null $Description Описание элемента.
*/
public ?string $Description;
/**
* @var string $URL Адрес URL элемента.
*/
public string $URL;
/**
* @var bool $OpenInNewWindow Открывать ли в новом окне (добавлять к ссылке target="_blank").
*/
public bool $OpenInNewWindow;
/**
* @var string|null $IconClass Класс иконки.
*/
public ?string $IconClass;
/**
* @var string $ParentId Идентификатор родительского элемента.
*/
public string $ParentId {
get {
return $this->ParentId ?? GUIDExtension::GUIDEmpty;
}
set {
// Проверка идентификатора
if (!GUIDExtension::Validate($value))
// - исключение
throw new Exception("Неверный идентификатор (GUID)");
// Установка идентификатора
$this->ParentId = $value;
}
}
/**
* @var int $Order Порядок.
*/
public int $Order;
/**
* @inheritdoc
*/
public function Duplicate (): MenuItemModel
{
// Создание дубликата модели
$model = new MenuItemModel();
// Копирование свойств
ClassMapper::MapClass($this, $model);
// Возврат дубликата
return $model;
}
}