Id ?? GUIDExtension::GUIDEmpty; } set { // Проверка идентификатора if (!GUIDExtension::Validate($value)) // - исключение throw new Exception("Неверный идентификатор (GUID)"); // Установка идентификатора $this->Id = $value; } } /** * @var string $Name Имя меню. */ public string $Name = ""; /** * @var string $Description Описание меню. */ public string $Description = ""; /** * @var MenuItems Элементы меню. */ public MenuItems $Items; /** * @var bool $AllowSubMenu Допустимо ли вложенное меню. */ public bool $AllowSubMenu = true; /** * @var MenuCssClassModel $Css Модель стилей оформления меню. */ public MenuCssClassModel $Css; /** * Конструктор. */ public function __construct () { $this->Items = new MenuItems([]); $this->Css = new MenuCssClassModel(); } /** * @inheritdoc */ public function Duplicate (): MenuModel { // Создаю новый класс $model = new MenuModel(); // Копирую свойства класса ClassMapper::MapClass($this, $model); // Возвращаю класс return $model; } /** * @inheritDoc */ public function ToSQL (bool $withId = true): array { // Создаем результат $result = []; // Добавляем значения $result['Name'] = $this->Name; $result['Description'] = $this->Description; $result['Items'] = $this->Items->Serialize(); $result['AllowSubMenu'] = $this->AllowSubMenu ? 1 : 0; $result['Css'] = serialize($this->Css); // Если требуется идентификатор if ($withId) // - то добавляем его $result['Id'] = $this->Id; // Возвращаем результат return $result; } /** * @inheritDoc */ public function FromSQL (array $sqlData): MenuModel { // Создаем результат $result = new MenuModel(); // Устанавливаем значения if (isset($sqlData['Id'])) $result->Id = $sqlData['Id']; if (isset($sqlData['Name'])) $result->Name = $sqlData['Name']; if (isset($sqlData['Description'])) $result->Description = $sqlData['Description']; $this->Items = new MenuItems([]); if (isset($sqlData['Items'])) $result->Items->UnSerialize($sqlData['Items']); if (isset($sqlData['AllowSubMenu'])) $result->AllowSubMenu = $sqlData['AllowSubMenu'] == 1; $this->Css = new MenuCssClassModel(); if (isset($sqlData['Css'])) $result->Css = unserialize($sqlData['Css']); // Возвращаем массив return $result; } }