В общем посидел над своим процедурным кодом и накидал пока что Классы и Функции к ним (без данных). Смотрю Елисеева, читаю Зандстру и "Объектно-ориентированное мышление" Вайсфилда.
Это только примерная принципиальная схема, каркас.
В данный момент получилось вот так:
(некоторые функции будут принимать другие объекты, да, "матрешка в матрешке")
// --------------- ВСЁ ЧТО КАСАЕТСЯ ПОЛЬЗОВАТЕЛЕЙ: -------------------
class User {
public function getName(){
// Отобразить имя
}
public function getPhone(){
// Отобразить телефон
}
}
class UserPersonalPage {
// Личный кабинет.
public function displayMyAdverts(){
// Показать мои объявления.
// Вызвать Объект MyAdverts, передать ему мой id для вывода моих объявлений
}
public function displayMyFavorites(){
// Показать мои избранные.
// Вызвать Объект MyFavorites, передать ему мой id для вывода моих избранных объявлений
}
public function displayMyPersonalInfo(){
// Показать мою персональную информацию - Имя, email, телефон
}
public function changeMyPersonalInfo(){
// Изменить мою персональную информацию - Имя, email, телефон
// Вызвать Объект UserService, передать ему мой id, вызвать метод изменения нужной информации
}
}
// --------------- ВСЁ ЧТО КАСАЕТСЯ ОБРАБОТКИ ПОЛЬЗОВАТЕЛЕЙ: -------------------
class UserService {
public function addUser(){
// Регистрация пользователя
}
public function deleteUser(){
// Удаление пользователя
}
public function activateUser(){
// Активация пользователя
}
public function changeUserPassword() {
// Сменить пароль пользователю
}
public function changeUserName() {
// Сменить имя пользователю
}
public function changeUserEmail() {
// Сменить email пользователю
}
public function changeUserPhone() {
// Сменить телефон пользователю
}
}
class UserLoginLogoutService {
// Вход и выход пользователей
public function userLogin(){
// Вход
}
public function userLogout(){
// Выход
}
}
// --------------- ВСЁ ЧТО КАСАЕТСЯ ОБЪЯВЛЕНИЙ: -------------------
class AdvertCollection {
// Список объявлений
public function displayRecentAdverts(){
// Показать последние добавленные объявления
}
public function displayPromotedAdverts(){
// Показать объявления выведенные в топ платно
}
}
class Advert {
// Объявление детально
public function displayAdvert(){
// Показать объявление детально
}
}
class AdvertFavorites {
// Избранные объявления
public function addAdvertToFavorites(){
// Добавить объявление в мои избранные
}
public function displayFavorites(){
// Показать мои избранные
}
}
class MyAdverts {
// Мои объявления
public function displayMyAdverts(){
// Показать все мои объявления
}
}
Как еще, более грамотно, можно всё это распределить? Как бы вы сделали?