Как же будет лучше, не могу решить....

интернет Компьютеры php ООП

Пишу скрипт с пользователями. Хочу использовать ООП для удобства. Значиться, основным классом будет user.

class user{
var $email;

function init(){
$this->email = $_SESSION['email'];
}
function getemail(){
return $_SESSION['email'];
}
function setemail($email, $id=$_SESSION['id']){
mysql_query('UPDATE users SET `email`="'.$email.'" WHERE `id`="'.$id.'"');
$_SESSION['email'] = $email;
}
}

Каждый пользователь имеет около десятка свойств (это только начало...). Лучше будет написать один класс user или же написать еще те десять дочерних классов, чтобы, например, вызов getemail() происходил вот так:

$user->email->get(); // так выглядит интересней, да и код будет упорядоченней

вместо:

$user->getemail(); // так в классе user будет дофига разных функций, которые никак не сгруппированы

__________________________________________________________________________________________________

Собственно, как будет лучше?

Примечание:
Скрипт будет полностью закрыт от анонимов, только зарегистрированные.

Массив профиля это понятно, а вот смена email, да еще десятка свойств...

Примечание:
hedint, дельный совет...

Примечание:
Объясню нормально вариант с дочерними классами...

Родительским будет класс user. Он будет содержать классы email, pass, name и пр. Для смены свойств !объектов!, а не имен класса user нужно будет обращаться к функциям только того объекта, свойства которого нужно изменить. Короче, я уже сам запутался... Нувыпонели.
Ответы:
а почему не делать $user->getProfile который вернет массив профиля?
а отправка имейла например это уже другой компонент
в целом можно еще разделить авторизацию и функции пользователя, ведь гость тоже может рассматриваться как пользователь
Если вы делаете проект один, будет лучше так, как вам будет понятнее через полгода.
Если вы делаете проект в команде (и он только начался) - договорится внутри команды.
Если вы пришли в новый проект, в котором уже есть определенный код и команда - делайте так, как делает команда.
я бы сделал кучу классов в классе user.
но как написал hedint (Вячеслав Володин), зависит от того, кто работает над проектом и как им (вам) удобнее.
ну и конечно если всё внутри user будет состоять из базовых типов, то не нужно, так делать
"имеет около десятка свойств"
Совершенно непонятно, зачем для каждого свойства юзера делать свой property. Разве нельзя просто взять строку из БД, сохранить её в $this->props в виде массива, а потом просто из этого массива читать?
"Родительским будет класс user. Он будет содержать классы email, pass, name и пр"
вы нифига не поняли, что такое ООП...
получается какое-то ООП ради ООП
вообще с php 5.4 можно делать такой фокус
$user->getProfile()['email']
Ээээ... Если совсем так все сурово...
1)  Одна таблица в базе данных - один класс. Это очень примитивно но для простых случаев верно. Т.е. если у вас emai это просто строка класс делать не нужно. Если же емайл у вас в роли отдельной сущности, то класс делать можно. Для иллюстрации второго примера: - есть сущность юзер, есть сущность фирма, есть сущность менеджер, есть сущность склад (а у него есть должна быть электропочта на которою отправляют заказы), в общем есть несколько сущностей у которых есть емайлы. При этом к адрессам электропочты требуется оставлять комментарии, и указывать дополнительные характеристики (например тип). Вот тогда емайлы можно хранить в отдельной таблицы и соединять и с сущностями по средством линковочной таблицы в бд, где указывается id емайла, id сущности и тип сущности. В этом случае для емайлов можно делать отдельный класс.
вообще в таких случаях мне все время хочется давать эту ссылку
http://ru.wikipedia.org/wiki/Python#.D0.A4.D0.B8.D0.BB.D0.BE.D1.81.D0.BE.D1.84.D0.B8.D1.8F


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.