Обновить
1
0
Сумин Алексей @asumin

программист

Отправить сообщение
Хабраюзеры! минус поставить может каждый, напишите в комент, что ни так, для всех же будет полезно.
пхпшный time() пожалуй а мускульный now()?
Код, реализующий сохранение связей, должен быть в методах сущности, которая «владеет» этими связями (не в подчинённых объектах).


подумав )), всё таки не могу согласиться с вами до конца. Вариант, когда код привязки располагается в той модели которую привязывают ( и не только модель, но соответствующие шаблоны и контроллеры) имеет очевидные преимущества:
1. Одна и та же модель, как правило привязывается ко всем другим одинаково (по моей статистике), т.е. картинки привязываются одним способом ко всем моделям, теги могут привязываться вторым способом, но всё равно одинаковым для всех моделей.
2. Дисциплинированность разработчиков: описав один раз привязку тегов — можно быть уверенным, что они будут привязываться единообразно ко всем моделям, и таблицы связей с полями будут единообразные.
3. Некоторые модели могут привязываться к десятку других моделей абсолютно одинаково, и в этом случае единственность кода, где это делается, имеет первостепенное значение с точки зрения вероятности ошибок и быстроты внесения правок.
4. Гибкость подключения / отключения новых связей, например, не было сначала тегов, потом появилась в них необходимость — добавили модель и контроллер с кодом привязки и всё — можно привязывать теги к любой модели просто указав у неё наличие связи с тегами ( ну и создав таблицу связей)
Расскажите за что минус, всем интересно, что ни так?
спасибо за развернутый ответ, плюсануть не могу, к сожалению (
При чем это физически один метод, но сам должен определять в каком контексте он вызван.
Интересно почему во многих примерах про Data Mapper используют явные методы getName(), setName(), а не __get() и __set()?
Еще вопрос, если использовать DM, то где должен располагаться код, реализующий сохранение связей? Вопрос с подковыркой ), к примеру, есть модельTag, теги могут одинаковым способом (меняется только название таблицы связей или fk) привязываться к другим моделям Post, QA, Book. С точки зрения понятности кода, привычнее
$post = new Post;
$post->addTags( [1,2,3] );

$qa = new QA;
$qa->addTags( [1,2,3] );

но с точки зрения дублирования кода, лучше
$post = new Post;
$qa = new QA;
Tag::addTo( $post , [1,2,3]);
Tag::addTo( $qa , [1,2,3]);

Не бейте сильно, хочется разобраться раз и навсегда )).
согласен с loadComments(), подразумевается, что он загружает данные в коллекцию или в один объект, т.е. и там и там должен быть loadComments().
Да отличный сайт и статьи, спасибо!
наверно мы не поняли друг друга, find() — загрузить просто пост без связей, findWithComments — значит загрузить пост с его комментариями
а как ваш пример с этим связан?
Ну да, это вечная дилемма разработчика — скорость разработки или скорость работы скрипта, но хочется найти какую-нибудь серебряную пулю, которая бы подходила большинству проектов. А нет куска кода на PHP с реальным и удачным DataMapper-ом?
именно это я имел ввиду, наверно так можно сделать если модель и связанная с ней коллекция будут иметь общего предка
можно за ЯД купить, ну и сама покупка доступа к рапиде ничего не доказывает, хотя лучше помолчать, а то и их закроют
но где посмотреть американские сериалы с русским переводом без задержки на годы?

в Америке, на языке оригинала ))
Значит будут качать с рапиды или летитбит за смску — всё равно дешевле.
ну тогда «каждый народ имеет то правительство, которое заслуживает».
с одной стороны палки, законы, которых большинство населения не просило, с другой стороны — гражданская активность, для которой даже делать ничего не надо, просто не купить — нормальный баланс сил.
Расстраивает, что люди пассивно воспринимают последние акты копирастии, что налоги с болванок, что торренты.
А тем временем каждый, может на это ответить, просто объявив всеобщий бойкот, очередной премьере в кино или новому альбому.
Пусть защитники копи-чести после этого посчитают убытки.
Почему всегда, когда в стране появляется какая то проблема, и государство не предлагает, а сразу воплощает решение этой проблемы, начинаешь думать, что лучше бы осталась старая проблема.
Перефразируя известное: «если государство взялось за решение вашей проблемы — то теперь у вас две проблемы» ))
Идиотизм как и во всей российской судебно-юридической системе. По логике судов теперь нельзя регать домен, открывать оффлайн газету/справочник, где есть слова ufa + rabota или «тракторные заводы». По ходу мы наблюдаем обратную волну — теперь владельцы ТЗ занимаются киберсквоттингом

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность