Как определить что это текущий пользователь

Вот имеется стандартно в движке User.entity.class.php, вот кусок кода:
class ModuleUser_EntityUser extends Entity {
	
	public function getId() {
        return $this->_aData['user_id'];
    }       
    public function getLogin() {
        return $this->_aData['user_login'];
    }


А хочется дописать еще функцию которая бы с минимальной нагрузкой на сервер определяла текущий это пользователь или нет, типа того:
class ModuleUser_EntityUser extends Entity {
	
	public function isIm() {
        if(условие) return true;
        else return true;
    } 
	public function getId() {
        return $this->_aData['user_id'];
    }

Понимаю что можно реализовать через
$this->User_GetUserCurrent()

А можно ли как-то легче?

4 комментария

avatar
Написать свою функцию которая определяет это дело, положить файл с ней в каталог /include и будет досутпна отовсюду. Может я что-то, правда, не так понял.
avatar
Ну это-то да, код был бы примерно таким:
User.entity.class.php

public function isIm() {
        return UserIsIm($this->_aData['user_id']);
}

Файл в includes:
function UserIsIm($iUserId) { 
if($iUserId<1) return false;
$oUser=$this->User_GetUserCurrent();
if($oUser->getId()==$iUserId) return true;
else return false;
}


Это всё понятно, но я хотел бы сделать как-то попроще. Допустим нам придется на одной странице раз 1000 спросить текущий это пользователь или нет, то тогда получится 1000 раз произойдет присваивание вида
$oUser=$this->User_GetUserCurrent();
а мне кажется это будет совсем не оптимизировано(даст нагрузку). Как можно по другому это сделать?
avatar
Ну… эээ… Когда дело касается таких цифр, то всегда надо смотреть как оптимизировать каждый конкретный случай… Если речь идет об одном модуле, то можно, например, просто определить это переменную $oUser, которой устанавливать значение $this->User_GetUserCurrent() до всех страшных итераций и сравнивать уже с ней. Если речь идет о вызовах каких-то «внешних» функций, то можно сделать эту переменную глобальной. Но когда дело касается авторизованности пользователей надо всегда смотреть на предмет безопасности, внимательно. Поэтому… каждый конкретный случай должен рассматриваться отдельно.
avatar
Хорошо, я понял.

Спасибо.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.