PHP ООП. Объект Users. Разжуйте плиз как надо это делать...

riff

Новичок
Автор оригинала: Larian
При ооп я просто создаю геттер через __get и на этом работа закончена.
А, ты уже на php5? Тогда вопросов нет. Согласен. Там с этим лучше :)
 

Larian

Новичок
блин. и че пост остается в форме после отправки? жму релоад и опять пост :(
 

riff

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

Larian

Новичок
Вроде в пхп 4 тоже есть наследование. Вот вам паттерн \"шаблонный метод\" позаимстованный еще из подвиндуписания.
У меня все запросы идут в одно место. и там создается обьект Application. Он все и разруливает. Поэтому и не стоят вопросы- а как отследить авторизацию и прочее, периодически возникающие на форуме. Но это я отвлекся. так вот. Там определен метод, который вызывает другие методы которые инициализируют какую то часть системы: база данных, логгер, конфиг, шаблоны, обработка ошибок (не путать с логгером) и так далее.

Пользы от этого в принципе немного. Но ведь приложение состоит из: админка (она же бэкенд) и сама морда (она же фронтенд). Более того если это какая то сервис типа блога, так еще модуль блог. Потом всякие утилиты вешаемые на крон. Ну еще много чего можно придумать, если захотеть. Делаем наследников от Application, в котором забита вся логика, как запустить приложение. И в наследнике просто переопределяем некоторые методы если надо. А все остальное нам остается даром через наследование.

Разве не удобно? и, насколько помню, такое можно сделать и в пхп4. Хотя могу и ошибаться. Все таки пхп 5 уже долго и че хостеры тянут, непонятно.

-~{}~ 20.02.07 21:30:

топикстартеру
б) как эту штуку заставить проверять тип, длину, правильность присваиваемых значений полей,
или это можно сделать только в момент insert ?
Если у тебя обьект в пхп 4 то сразу определи геттеры и сеттеры. Если в пхп5 то есть магические методы. Где ж как не внутри обьекта проверять типы. Хотя реальный опыт написания показал, что обьект создается в одном месте, где нужна была бы проверка (база не в счет. считаем что туда неправильные данные не попадают). Хотя если появятся плагины, которые могут менять обьект будет уже труба без контроля.

в) на случай неуспеха вставки данных, нам нужно вернуть все это в поля формы, опять долго и нудно все оттуда доставать
Зачем доставать? ты же данные достал из $_POST и они оттуда никуда не делись. Я вон тоже парился с такой задачей- без нужды базу не дергать, и форма перегружается заполненной и с нужными полями указана ошибка. Задача решаема не очень сложно. Используй хотя бы на крайний случай Form Persistent
 

hermit_refined

Отшельник
всего три часа прошло, а тут уже за упокой...

miftahovn
вы задаете вопросы, на которых нет и не может быть простых и однозначных ответов.
часть из них разумна, часть - нет. понять что к чему и дозреть вам придется самостоятельно.
т.е. можно было бы, например, попробовать пересказать вам Фаулера (примеров кода у него там более чем достаточно), но - неблагодарное это занятие.

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

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

Larian

Новичок
riff

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

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

Особо в пхп 5 такого что нельзя было бы сделать на пхп4 не добавлено. Просто неудобно. Даже исключения можно, правда через задницу, сделать на пхп 4.

-~{}~ 20.02.07 21:49:

hermit_refined

Я в каждом новосозданном обьекте сразу ставлю исключение при запросе свойства, если оно должно быть и его нету. При написании часто где то, что то забудешь и оно сразу будет видно. Уменьшается круг поисков. Вместо того чтобы дебаггером идти искать причину(ибо после использования неправильного обьекта код еще может много выполнятся ) - мы видим что при создании обьекта свойство не установленно. И сразу идем туда.

Да где ж логично ожидать, что не выбросится ислючение? Наоборот, как раз ожидаем, что оно может выбросится и сразу принимаем меры, а что будем делать. А то прошел обьект по цепочке плагинов, кто поручится, что они не сделали ничего лишнего?

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

hermit_refined

Отшельник
Larian
я говорил, например, о недостатках __get по сравнению с явными getName(), etc.
 

Larian

Новичок
что то мы далеко ушли он темы топика. Надо возвращаться в тему.
 

riff

Новичок
Автор оригинала: hermit_refined
есть достаточно много программистов, которые не воспринимают ООП. кто-то - действительно потому, что у него нет к этому склонности, кто-то - потому что оно слишком сложно для него. и всё бы ничего - если бы некоторые при этом не мнили себя супер-программистами и не рационализировали свою несовместимость с ООП ненужностью последнего. считая своим долгом заявить об этой ненужности при каждом удобном случае.
Не очень люблю когда люди начинают строить из себя провидцев и домысливают от себя...
На счёт ООП: с ООП знаком неплохо, не много не мало почти наизусть знаю всю Delphi'нскую VCL и всю её поднаготную, знаю как там всё крутится и как знаю работать с классами в php, так что с этим ты промахнулся.
На счёт вопроса автора вопроса: я никого не учил как писать, я лишь высказал своё мнение на этот вопрос и показал пример с которым автор может согласиться/не согласиться, а сказать своё мнение, извини, но я имею право: в данном вопросе автор, как мне показалось, выбирает вариант решения своей задачи и от моего ответа наврятли ему станет хуже...
 

hermit_refined

Отшельник
я лишь высказал своё мнение
вы развили нехилый флейм, я б сказал ;-)
выбирает вариант решения своей задачи
вот именно, человек находится в многообещающих творческих поисках, в отличии от.
с ООП знаком неплохо, не много не мало почти наизусть знаю всю Delphi'нскую VCL и всю её поднаготную, знаю как там всё крутится и как знаю работать с классами в php, так что с этим ты промахнулся
да, это тоже знакомая песня.
 

jonjonson

Охренеть
пхп такой язык, что не очень то сильно отличается юзаешь ооп или нет. он ведь скриптовый.
Larian, после этого трудно с вами спорить в ключе ООП :)

miftahovn, прав hermit_refined утверждая
вы задаете вопросы, на которых нет и не может быть простых и однозначных ответов.
Главное помните, кроме вас никто не знает вашей задачи, и постарайтесь в ней быть более конкретным. Используйте чёткие абстракции данных и методов. Абстракция в данном случае - это нечто более похожее на человеческое, чем на тупой набор методов get, set, remove...
Например...
PHP:
$curent_user = UsersManager::findUserById($user_id);
//...
$curent_user = UsersManager::findUserByName($user_name);
//...
if ($curent_user->isBlocked()) {
    //...
}
И посоветую ещё одну книгу: http://www.books.ru/shop/books/330247
 

riff

Новичок
Автор оригинала: hermit_refined
вы развили нехилый флейм, я б сказал ;-)
Так не на "oop vs проц." я в своём вопросе к автору хотел сделать акцент, а на том как должно было бы, по его мнению, упроститься написание скрипта... Я в одном из ответов нарисовал набросок двух классов user и users, примитивных правда, но и не моё это дело домысливать за автора чего ему надо, от автора хотелось бы услышать в таком ли он виде хочет видеть своих юзеров и/или уточнение своего вопроса как и куда планирует копать.
 

Alexandre

PHPПенсионер
если речь о пхп5, то использование (а предварительно изучение) STL, PDO, SDO во многом упростит и понимание кода, и читаемость, и сами архитектурные решения.

Как сказал hermit_refined, пересказывать Фаулера - не благородное дело. В PDO, SDO и STL на более низком уровне уже реализованна часть шаблонов, а следовательно и работать будет быстрее.
 
Сверху