В БУС существует глобальный экземпляр пользователя $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()));
} |
Какие могут быть проблемы такого подхода? Может есть путь красивее?