|
|
|
| Сразу оговорюсь, архитектура классов, наверняка, неправильная, поэтому возник такой вопрос, может кто-то из Вас подскажет, как правильно это сделать. Используется структура 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.
Что Вы думаете по этому поводу? Какие есть предложения у знатоков ООП? В целом задача разграничить уровень доступа к просмотру/редактированию профайла. | |
|
|