Допустимо ли использовать наследование в этой ситуации?
Существует два класса для интернет магазина.Первый класс называется User.В нем содержатся переменные и методы для определения email, идентификатора пользователя и т.п. Второй класс называется basket.В нем содержатся методы для вывода товаров из корзины, добавления товаров в корзину и т.п. В классе basket функция для вывода товаров из бд принимает в аргументе идентификатор пользователя, который записывается в sql запрос.Идентификатор пользователя можно получить из метода в классе User.Поэтому, я реализовал наследование class Basket extends User.В нем создается конструктор, в который записываются переменные из класса User parent::__construct($email, $password).Допустимо ли использовать наследование в этой ситуации?
За последние лет 5 не могу вспомнить случая когда наследование было бы оправданным (если не считать случаев уродского дизайна когда без наследования просто невозможно обойтись).
Demian Smith, на самом деле можешь, если наследоваться от абстрактного класса - то как это и было задумано.
С другой стороны, с появлением интерфейсов надобность в абстрактных классах сильно упала.
Anonymous85966, откуда-то они его берут?
Здась форум не по литературе. А по прграммированию
Никому не нужен твой пересказ кода своими словами.
если ты хочешь совет по коду, то показывай КОД. что ты там имеешь в виду своим "возвращают" никто не знает
и я, со своими 20 годами опыта, не могу себе представить, чтобы корзина и юзер имели на 100% идентичный код метода getUserId.
class User{
function __construct($email,$password){
$this->email=$email;
$this->password=$password;
}
function get_user_id($email){
$sql="SELECT FROM users WHERE email='$email' ";
//выполняю запрос и сохраняю результат в переменную $id
return $id;
}
}
class Basket{
function get_user_id($email){
$sql="SELECT FROM users WHERE email='$email' ";
//выполняю запрос и сохраняю результат в переменную $id
return $id;
}
}
Я уже понял, что это бессмысленный код.Решил проблему так:При авторизации сохраняю в сессию два экземпляр класса-User и Basket($_SESSION['user']=new User(),$_SESSION['basket']=new Basket()).Далее при необходимости через экземпляр класса User получаю id,email пользователя.Потом при использовании методов класса Basket просто передаю эти данные в аргумент функции и получаю нужный результат
Anonymous85966, это всё никуда не годится
хранить экзампляры классов в сессии совсем плохая идея
В сессии должен храниться только айди юзера.
И вот изсессии и бери его сразу.
А вот если тебе понадобится емейл - то его можно получить из класса юзер по айди.
FanatPHP, поясните,почему нельзя хранить экземпляры классов в сессии.Сессии хранятся на сервере, а значит.они защищены.А так это очень удобно,ведь в любом скрипте я могу получить нужные данные из экземпляра, хранящегося в сессии