Value = $defValue; // Создаю список сообщений $this->Messages = new ObjectArray([]); } // Статичные методы и константы use ActionStateStaticTrait; // Методы добавления сообщений use ActionStateAddTrait; // Методы проверки на наличие сообщений use ActionStateHasTrait; // Методы получения сообщений use ActionStateGetTrait; /** * Количество сообщений, удовлетворяющих условию. * * @param callable $predicate Условие выборки * * @return int Число сообщений */ public function Count (callable $predicate): int { return $this->Messages->Count($predicate); } /** * @inheritDoc */ public function Serialize (): string { // Создаю список сообщений $list = []; // Для каждого сообщения foreach ($this->Messages as $message) // - сериализую его и добавляю в список $list[] = $message->Serialize(); // Возвращаю результат return json_encode($list); } /** * @inheritDoc */ public function UnSerialize (string $serialized): void { // Очищаю список сообщений $this->Clear(self::GET_STRING_ALL()); // Десериализую список сообщений $list = json_decode($serialized, true); // Для каждого сообщения foreach ($list as $messageSerialized) { // - создаю новое сообщение $message = new ActionStateMessageModel(); // - десериализую его $message->UnSerialize($messageSerialized); // - добавляю в список $this->Add($message); } } /** * Очищает список сообщений, согласно условию. * * @param callable $predicate Условие выборки * * @return void */ public function Clear (callable $predicate): void { $this->Messages->Delete($predicate); } }