Дата последнего изменения: 10.08.2020
Перед подключением компонента ко всем значениям параметров применяется функция htmlspecialcharsEx. Исходные значения параметров сохраняются в этом же массиве с теми же ключами, но с префиксом ~. Например, $arParams["NAME"] - входной параметр, к которому применена функция htmlspecialcharsEx, а $arParams["~NAME"] - исходный входной параметр.
Переменная $arParams является псевдонимом для члена класса компонента, поэтому все изменения этой переменной отражаются и на этом члене класса. В начале кода компонента должна быть произведена проверка входных параметров, инициализация не установленных параметров, приведение к нужному типу (например, IntVal()). Все эти изменения входных параметров будут доступны и в шаблоне. То есть параметры будут там уже проверенными и максимально безопасными. Дублирование подготовки параметров в шаблоне компонента не требуется.
Переменная $arResult является псевдонимом для члена класса компонента, поэтому все изменения этой переменной отражаются и на этом члене класса. Значит явно передавать в шаблон эту переменную не нужно, это сделают внутренние механизмы класса компонента.
Ссылки (references) в PHP служат для того, чтобы к одним и тем же данным можно было обратиться по разным именам. Если переменные $arParams и $arResult изменены некоторым образом в коде компонента, то они будут доступны измененными и в шаблоне.
При этом нужно учитывать следующие нюансы:
$arParams = & $arSomeArray; $arParams будет отвязана от члена класса компонента и привязана к массиву $arSomeArray. В этом случае дальнейшие изменения $arParams не попадут в шаблон компонента.unset($arParams); $arParams и соответствующим членом класса компонента.