Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как разграничить классы CI - уровни доступа?
 
 автор: OLi   (15.08.2014 в 22:50)   письмо автору
 
 

Сразу оговорюсь, архитектура классов, наверняка, неправильная, поэтому возник такой вопрос, может кто-то из Вас подскажет, как правильно это сделать. Используется структура MVC от фреймфорка. Все описываемые классы ниже - классы контроллеры.


Класс Profile - больше как репозиторий данных - потому что большая часть методов для выборки данных о пользователях.

Сейчас внимание остановилось на двух написанных пользовательских классах, которые написаны в одном файле php: Profile и EditProfile.

class Profile extends Auth {
}

class EditProfile extends Profile {
}

В первом классе, предусмотрены все необходимые методы для получения информации об АВТОРИЗИРОВАННОМ, текущем пользователе.

Входной точной класса Profile, является метод:

public function index($section = 'personal'){
        $this->route();
    }

который принимает параметр, определяющий, какую информацию отобразить для авторизированного пользователя. К чему все это? К тому, что нужен механизм отображения frontend профилей пользователей, защищенный. Так как в классе Profile имеются методы edit.

Вопрос стоит в архитектуре ООП. Можно написать еще один класс, в котором продублировать все необходимые методы, которые уже есть в классе Profile (что не хочется делать), или же добавить еще одну входную точку в класс Profile и определять ее другим адресом в route?

Например, запросить профайл пользователя по адресу URL: /profile/user/23 Тогда в классе Profile определить публичный метод user(), принимающий целочисленный параметр 23, а внутри него создать экземпляр класса:
public function user($idUser = null){ $publicProfile = new PublicProfile($idUser); }


Где PublicProfile - 3-й класс extends класс Profile

Таким образом управление профайлами передается польностью классу PublicProfile, при этом имея доступ к private методам класс родителя Profile.

Что Вы думаете по этому поводу? Какие есть предложения у знатоков ООП? В целом задача разграничить уровень доступа к просмотру/редактированию профайла.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования