25  /  26

Случайные и неслучайные строки

Просмотров: 18315
Дата последнего изменения: 03.07.2023
Роберт Басыров
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
1
2
3
4
5
Недоступно в лицензиях:
Ограничений нет

Очень часто в коде компонентов, для того чтобы сгенерировать какие-то уникальные идентификаторы используются методы randString и rand. В нашем случае эти методы плохи тем, что при каждом выполнении дают новые случайные значения. Вследствие чего статическая часть страницы изменяется, что приводит к перезаписи страницы на диск.

Для устранения этой проблемы был разработан специальный метод псевдопоследовательностей (псевдослучайный генератор), который просидирован в зависимости от названия компонента и номера его подключения на странице. Соответственно, разные компоненты, расположенные на странице, будут иметь разные источники псевдослучайных величин и эти псевдослучайные строки будут одинаковы в рамках какого-то конкретного компонента. Что обеспечит стабильную генерацию и избавит от перезаписи статических страниц на диск.

Например, на странице встречаются два компонента и в каждом из них вызывается randString(); по нескольку раз и каждому вызову присваивается свой идентификатор. Если удалить первый компонент, то идентификаторы второго останутся без изменений. И если в первом добавить/удалить вызовы, то и в этом случае идентификаторы второго останутся без изменений.

Метод randString() класса CBitrixComponent обеспечивает стабильную генерацию псевдослучайных величин. Сколько раз его ни вызывай в шаблоне это не повлияет на другие компоненты/шаблоны.

Для вызова, что в компоненте, что в шаблоне можно и нужно писать так:

$this->randString();

Например: генерация видеоблока, где используется случайный ID.

23
Курсы разработаны в компании «1С-Битрикс»

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