100 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			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;
 | |
|     }
 | |
| } |