#1 2012.04.18 15:45

НЕЗНАЙКА
Участник
Откуда: Россия
Зарегистрирован: 2008.11.24
Сообщений: 313
Карма: 11
Профиль Веб-сайт

Проверка в классе, наследование

имеются следующие методы:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Проверка доступа по группе
public function isGroupAllowed($__right, $__access)
{
if (empty($__right) || empty($__access)) return false;
if (in_array($__access, $this->getGroup($__right))) return true;
 
return false;
}
// Получение Группы
public function getGroup($__right)
{
if (empty($__right)) return false;
 
for ($i=0;$i < count($this->__groups);$i++)
{
if (in_array($__right, $this->__groups[$i]['rights']))
{
if (in_array($this->__groups[$i]['name'], $this->__group)) continue;
$this->__group[] = $this->__groups[$i]['name']; break;
}
}
 
return array_unique($this->__group);
}

При использовании проверки isGroupAllowed $__group наследуется, поэтому в группе получаются ложные данные. Пользователь попросту имеет права которые проверяются :-)
Как можно поправить?
Я подумал и верным будет после проверки сбрасывать массив группы.

Код:

1
if (in_array($__access, $this->getGroup($__right))) { $this->__group = array(); return true; }

Это нормально?


ДАУН-Данная Аватара Унаследована Незнайкой

Неактивен

#2 2012.04.18 18:05

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Проверка в классе, наследование

1) почему ты добавляешь __ перед названием переменных? на сколько я помню это не рекомендуемые названия
2) добавь phpDoc, непонятно, что за переменные вообще
3) for ($i=0;$i < count($this->__groups);$i++) // ну, не мог не доколупаться)
4) getGroup - это не геттер, а сеттер получается. т.е. setGroup
5) я бы отдельный метод написал вообще, наверное

Неактивен

#3 2012.04.18 21:22

НЕЗНАЙКА
Участник
Откуда: Россия
Зарегистрирован: 2008.11.24
Сообщений: 313
Карма: 11
Профиль Веб-сайт

Re: Проверка в классе, наследование

1. Приму к сведению,  __ чисто "красиво")
2. Я пока опять с телефона, придется изучать понятия
3. Это перебор всех групп в поисках принадлежности прав к группе
4. setGroup уже есть) Он выступает в роли addGroup, добавление новых
5. Не понял? Без участия getGroup?
Добавлено спустя   3 минуты  44 секунды:
и грубо говорю это мои попытки написания классов, поэтому тонкостей не знаю - пишу "как есть"


ДАУН-Данная Аватара Унаследована Незнайкой

Неактивен

#4 2012.04.18 21:45

НЕЗНАЙКА
Участник
Откуда: Россия
Зарегистрирован: 2008.11.24
Сообщений: 313
Карма: 11
Профиль Веб-сайт

Re: Проверка в классе, наследование

вот текущий вариант, не доделан ещё


Вложения

ДАУН-Данная Аватара Унаследована Незнайкой

Неактивен

#5 2012.04.18 21:54

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Проверка в классе, наследование

1) по Zend стандартам на приватные и защищенные методы и свойства отводится ОДНО подчеркивание вначале.
3) count выполняется на каждую итерацию в цикле
4) в любом случае, твой getGroup не выполняет роли геттера, он задает значение переменной $this->__group - следовательно это сеттер.
5) да

Неактивен

#6 2012.04.18 22:07

НЕЗНАЙКА
Участник
Откуда: Россия
Зарегистрирован: 2008.11.24
Сообщений: 313
Карма: 11
Профиль Веб-сайт

Re: Проверка в классе, наследование

ок, переделаю. Но тогда придется вставить код getGroup без return. Более выхода не замечаю
Тогда что делает get?


ДАУН-Данная Аватара Унаследована Незнайкой

Неактивен

#7 2012.04.19 11:25

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Проверка в классе, наследование

НЕЗНАЙКА написал:

придется вставить код getGroup без return

нет, тебе нужно сделать чтобы геттер не выполнял роли сеттера, т.е. не делал $this->__group[] = $this->__groups[$i]['name'];
гет - возвращает данные, но не присваивает)

Неактивен

#8 2012.04.19 12:47

НЕЗНАЙКА
Участник
Откуда: Россия
Зарегистрирован: 2008.11.24
Сообщений: 313
Карма: 11
Профиль Веб-сайт

Re: Проверка в классе, наследование

ясно. Тогда смотри, лучше использовать класс чисто для одного пользователя и гет будет выдавать group. А что придумать, если нужно узнать группу для другого пользователя (в админ панели)? Написать разные методы getGroup и getUserGroup, где usergroup не перезаписываются значения?


ДАУН-Данная Аватара Унаследована Незнайкой

Неактивен

#9 2012.04.19 13:36

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Проверка в классе, наследование

как вариант да.

Неактивен

#10 2012.05.08 00:02

2010
Участник
Откуда: localhost
Зарегистрирован: 2010.02.20
Сообщений: 230
Карма: 1
Профиль

Re: Проверка в классе, наследование

НЕЗНАЙКА, кстате, в цикле лучше использовать sizeof чем count.
Она работает быстрее чем конт, если что...
Я всегда только sizeof использую) да и не только в цикле

Отредактировано 2010 (2012.05.08 00:03)

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.012 s