Дата последнего изменения: 06.06.2024
Зачастую в коде компонентов для генерации уникальных идентификаторов используются методы randString и rand, выдающие новые случайные значения при каждом своем выполнении. Вследствие этого статическая часть страницы изменяется, приводя к перезаписи страницы на диск.
Для устранения этой проблемы разработан специальный метод псевдопоследовательностей (псевдослучайный генератор), который учитывает название компонента и порядок его подключения на странице. Разные компоненты, расположенные на странице, будут иметь разные источники псевдослучайных величин. Данные псевдослучайные строки будут одинаковы в рамках конкретного компонента. Такой подход обеспечивает стабильную генерацию и избавляет от перезаписи статических страниц на диск.
Например, на странице встречаются два компонента, в каждом вызывается randString(); по нескольку раз, и каждому вызову присваивается свой идентификатор. Если удалить первый компонент или добавить/удалить вызовы, идентификаторы второго останутся без изменений.
Метод randString() класса CBitrixComponent обеспечивает стабильную генерацию псевдослучайных величин. Метод можно многократно вызывать в шаблоне без влияния на другие компоненты и шаблоны.
Вызов выглядит следующим образом:
$this->randString();
В качестве примера можно взять генерацию видеоблока с использованием случайного ID.