В БУС существует глобальный экземпляр пользователя $USER. Вполне логично для нужд конкретного проекта добавить в пользователя свои свойства и методы. Но есть ли легальный способ расширить класс пользователя? Я делаю так
Создаю свой класс пользователя
Далее в обработчике подменяю дефолтного юзера
и теперь везде $USER экземпляр моего класса.
Какие могут быть проблемы такого подхода? Может есть путь красивее?
Создаю свой класс пользователя
class User extends \CUser { public function __construct(\CDBResult $bxUser = null) { parent::__construct(); if($bxUser && !is_array($this->arResult[0])) { $this->arResult[0] = $bxUser->Fetch(); } } //свои свойства и методы } |
Далее в обработчике подменяю дефолтного юзера
public function onBeforeProlog() { /** @global \CUser $USER */ global $USER; /** @global \CMain */ global $APPLICATION; $GLOBALS['USER'] = $USER = new User(\CUser::GetByID($USER->GetID())); } |
Какие могут быть проблемы такого подхода? Может есть путь красивее?