(bool) $bExists umiObjectsCollection :: isExists ( (int) $object_id )

Описание:

Возвращяет true, если объект данных с переданным идентификатором существует в коллекции объектов данных системы, false в противном случае.

Используйте этод метод для определения существования объекта до того как начать работать с ним. Например, его логично использовать перед попыткой удаления объекта, чтобы не совершать лишних действий, если это не необходимо.


Пример кода:

<?php
/*
Метод-пример, удаляющий объект - элемент справочника, а также все элементы иерархии, связанные с ним (у которых значение свойства типа "ссылка на элемент справочника" соответствует идентификатору удаляемого объекта)
//
Допустим, у нас все элементы иерархии в дереве сайта имеют свойство 'цвет' (color), привязанное к справочнику "Цвета страниц" (базовый тип 'pages_colors' модуля 'content').
Допустим, что бизнес-логика сайта такова, что при удалении какого-либо цвета из справочника должны удаляться все страницы (элементы иерархии), с таким значением свойства 'цвет'.
При такой логике перед удалением цвета из справочника необходимо как минимум получить список всех страниц с заданным значением свойства. При этом в данном примере предлагается сначала проверить, существует ли в действительности объект - элемент справочника, и только в таком случае производить выборку страниц (предполагается, что затраты ресурсов на проверку существования цвета в справочнике каждый раз при попытке удаления будут меньше затрат ресурсов на выборку страниц, которая все равно вернет пустой результат, если такого цвета в справочнике нет).
*/
public function removeColorFromDictionary($iColorObjectId) {
// первым делом - проверяем объект на существование (и если нет - не выполняем много кода)
if (umiObjectsCollection::getInstance()->isExists($iColorObjectId)) {
// сначала получаем тип объекта "цвет страницы"
$iDctObjType = umiObjectTypesCollection::getInstance()->getBaseType('content', 'pages_colors');
// теперь проверяем, что переданный нам идентификатор - идентификатор объекта типа $iDctObjType
$oObjectToDelete = umiObjectsCollection::getInstance()->getObject($iColorObjectId);
if ((
$oObjectToDelete instanceof umiObject) && $oObjectToDelete->getTypeId() === $iDctObjType) {
// только после этого выбираем страницы
// ...
// удаляем выбранные страницы
// ...
// удаляем сам объект
umiObjectsCollection::getInstance()->delObject($iColorObjectId);
}
}
}
?>


Сайт с системой управления от 6000 рублей!






Посмотреть