геттеры, сеттеры и магические методы. Когда они оправданы?

Silentland

Новичок
Ну ты понимаешь.
Что программеры обнаглевшие люди, ничего не делающие и получающие кучу бабок? :) Догадываюсь... особенно, после того как исправил свое резюме на хедхантере на ПХП-программиста с з.п. 60т.р. от балды. За неделю на три собеседования пригласили. Даже неплохо на вопросы отвечал. В одно место почти взяли... Но их смущал мой опыт. Еще бы, программировал-то я всего 3 месяца, до этого совсем другим занимался :) Вот теперь думаю... Займись после универе этим, а не своей специальностью, все было бы по-другому)
 

craz

Нестандартное звание
что лол?
Silentland
У ТЕБЯ АЙДИШНИК ПРИШЕЛ ОТ ПОЛЬЗОВАТЕЛЯ/из $_POST/из $_GET! Я уже не могу спокойно, тебе просто прям шаг остался, а ты никак не можешь его сделать))))

зачем тебе $user->id если ты делаешь $user->fetchAll(), или $user->fetchOne($_POST["id"]) - грубо говоря...

У тебя всегда есть начальное условие выборки, пойми, толи ты выбираешь все, толи ты выбираешь только по id, толи по городу проживания, и тд. тп. - но начальные условия тебе всегда известны.
 

Silentland

Новичок
У ТЕБЯ АЙДИШНИК ПРИШЕЛ ОТ ПОЛЬЗОВАТЕЛЯ/из $_POST/из $_GET!
Да уж, туплению моему нет конца))
Дело в том, что я не делаю $user->fetchAll(), или $user->fetchOne($_POST["id"]) . Вообще, не произвожу выборку. Мне только обновить поле нужно и все.

А методов, работающих напрямую с $_POST["id"] в том классе нет (кроме выборки всего и вся) или мыо разных классах?

Или и впрямь делаю этот шаг в другую сторону, но хоть убей, не понимаю, в какую надо))
 

Тугай

Новичок
Задача похожа на ту, что мне предстоит решать в ближайшее время, она такая:
Пользователь должен иметь возможность совершать покупки в интернет магазине, без регистрации оставляя только нужную информацию.
При этом должны быть зарегистрированные пользователи, которым не надо вбивать по сто раз информацию которая уже у них в профиле.

Движок магазина устроен так, что удобен в совершении первой покупки он выполняет автоматическую регистрацию для нового посетителя и отправляет ему email с паролем,
но когда покупатель возвращается через время в магазин это письмо давно стер или вообще никогда не открывал и пароль не помнит и пароль к своему email не помнит,
восстановление пароля это сложно, короче проблемы для клиента ну и минус покупатель для магазина.
(Многие заводят email, чтоб он был, потому что его просят вводить на сайтах и то, что он для почты глубоко пофигу.)

Это конечно проблема конкретного движка.

Сегодня мое решение - убрать автоматическую регистрацию и ненавязчиво предлагать постоянным клиентам пройти стандартную регистрацию,
после чего им не надо будет снова и снова вводить свой телефон и адрес.
Ненавязчиво это по электронной почте, при обновлении статусов у заказа.

Это отчасти потому, что судя по структуре базы, авто регистрация появилась недавно и принесла больше проблем.
Таблица заказов не нормализована до конца и содержит все нужные поля о покупателе.
Ну и отлично, дальше я ее нормализовать не собираюсь, не зарегился пиши все каждый раз заново. :)
 

Silentland

Новичок
Не знаю, что за магазин такой, но часто ли люди возвращаются в один и тот же интернет-магазин, если это не Озон? Сдается мне, что либо никогда, либо периодически (раз в месяц, например) и покупают одно и то же. Одним пароль нафиг не нужен, другие зарегистрируются первым же делом. И проблемы как бы и нет. Отправлять случайный пароль — плохое решение. Нужно отправлять ссылку, по которой пользователь сможет установить свой стандартный пароль для 100500 сайтов, который не забудет, да и просто сможет зайти по ней на сайт залогиненным.

А еще есть такая штука как телефон и социальные сети. Вероятность потерять симку или забыть пароль от контакта близка к нулю )

И почему бы не запоминать пользователя на долгое, очень долгое время. На год?
 

craz

Нестандартное звание

Lionishy

Новичок
Silentland
Разрушу ваши мечты, но здесь никто не научит Вас программированию и не будет объяснять понятия Persistance Layer, Ojbect Layer, Data Acess Object и прочее.
Тому есть три простые причины:
i) это никому не нужно
ii) не у всех есть способности к этому
iii) ни у кого нет на это времени.

Вы задали вопрос и получили неожиданный ответ: используй объекты в объектном слое, синхронизируй объекты со слоем постоянных данных отдельно.
Теперь пришло время отправиться в путешествие и познать все эти новые для Вас слова, чтобы поднабравшись знаний вернуться и задать конкретные вопросы, на которые Вы, возможно, получите уже ожидаемые ответы, хотя бы в процессе дискуссии.

А заявления типа: у меня задача такая-то и хочу так вот, как сделать мою задачу -- никогда не приведут к конструктивному завершению. Потому что решать за Вас вашу задачу никто не будет. Вы программист, это ваша работа. Вам высыпают общие слова и рецепты, но как их доработать напильником под свой проект -- это уже ваше личное дело как специалиста. Если же не хватает профессиональных навыков, чтобы это сделать, тогда нужно отправляться в то самое увлекательное путешествие, чтобы познать непознанное.
 

craz

Нестандартное звание
Не надо наследовать классы, работающие с базой, их надо использовать внутри.
З.ы.ы. Меня чето отвлекло я не правильно дописал)

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

А вот абстракции работы с сущностями, такие как классы User, News и т.д. и т.п. уже имеют доступ
до классов работающих с таблицами, а лучше до класса маппера.

Короче это дата маппер. И только скажите, что вы этого не поняли сразу)


Не я могу конечно не правильно обьяснять на словах, в коде и в UML это выглядит более наглядно 100%
 

Тугай

Новичок
И почему бы не запоминать пользователя на долгое, очень долгое время. На год?
Если в куках его браузера, то нет проблем.
А если в бд сайта, то без регистрации нельзя, потому что в этом случае сайт превращается службу предоставления профиля по email.
 

Silentland

Новичок
Разрушу ваши мечты, но здесь никто не научит Вас программированию и не будет объяснять понятия Persistance Layer, Ojbect Layer, Data Acess Object и прочее.
Ну не так все. Учат и вполне хорошо. Конечно, любой совет я испытываю, изучаю новую инфу, применяю к своим задачам. И, вообще, из дискуссий много полезного подчерпывается :)
 
Сверху