Считаю, что использование глобальных переменных во всех методах компонента не самый лучший подход (пример проблемы с SITE_ID в компоненте).
[spoiler]
Пример sale.basket.basket.line:
public function executeComponent()
{
...
if($this->arParams["SHOW_TOTAL_PRICE"] == "Y")
$this->arResult["TOTAL_PRICE"] = CCurrencyLang::CurrencyFormat(
$this->arResult["TOTAL_PRICE"],
CSaleLang::GetLangCurrency(SITE_ID), // причина идеи
/*CSaleLang::GetLangCurrency($this -> arParams ["SITE_ID"])*/, // например
true
);
...
}
|
В выше указанном примере используется SITE_ID в методе executeComponent (и еще в 6 местах).
Если бы ограничить использование глобальных переменных и констант в компоненте одним методом для их сбора (для чего есть onPrepareComponentParams), тогда достигли бы большей гибкости в наследовании компонентов.
И еще: даже если константа или глобальная переменная обязательная в методе, то всегда можно вынести ее приватным параметром.