20250711 1.1.1 Beta 3

This commit is contained in:
2025-07-11 19:40:30 +03:00
parent 83a76dc8e2
commit 3fbb7dc81c
7 changed files with 1001 additions and 10 deletions

View File

@@ -0,0 +1,100 @@
<?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;
}
}