Silentland
Новичок
У нас есть класс user, работающий с пользователями. Предположим, нам нужно работать со статусом пользователя для чего в лоб можно написать пяток методов:
Можно парные методы заменить одним и вызывать его с параметром или без
Можно пойти дальше и переопределить методы __get и __set, тогда обращаться будет еще проще.
А если выпить Фанты, то можно ответвить, к примеру, два класса userSession и userDB и сделать там методы __get и __set универсальными. Пример __get для работы с базой
Вообще, удобно!
Но т.к. у меня это все в теории, а форумчане явно с пользователями давно работают, скажите, что предпочтительнее в большинстве случаев?
PHP:
public function setCurrentStatus($value) {
$_SESSION['status'] = $value;
}
public function getCurrentStatus($id) {
return isset($_SESSION['status']) ? $_SESSION['status'] : "guest";
}
public function updCurrentStatus($id) {
setCurrentStatus(readStatus($id));
}
public function readStatus($id) {
$res = mysql_query("select `status` from `users` where `id` = '" . (int)$id . "'" );
$row = mysql_fetch_assoc($res);
return $row['status'];
}
public function changeStatus($id, $value) {
mysql_query("update `users` set `status` = '" . $value . "' where `id` = '" . (int)$id . "'");
}
PHP:
public function currentStatus($value) {
if (isset($value)) {
$_SESSION['status'] = $value;
} else {
return isset($_SESSION['status']) ? $_SESSION['status'] : "guest";
}
}
А если выпить Фанты, то можно ответвить, к примеру, два класса userSession и userDB и сделать там методы __get и __set универсальными. Пример __get для работы с базой
PHP:
public function __get($param) {
if (array_key_exists($params, $this->params)) {
$res = mysql_query("select `" . $param . "` from `users` where `id` = '" . $this->getCurrentId() . "'" );
...
return $param_from_db;
}
}
Но т.к. у меня это все в теории, а форумчане явно с пользователями давно работают, скажите, что предпочтительнее в большинстве случаев?