ИМО, у каждого варианта есть свои плюсы и минусы, и вы должны быть тем, кто сделает окончательный выбор, учитывая, что вы единственный, кто знает, о чем ваш проект, каковы критические точки проекта, каковы ожидаемые типичный пользовательский шаблон, какие ресурсы доступны и т. д.
Если бы у меня была полная свобода выбора, моими личными фаворитами были бы варианты №4, №1 и №5 (подождите! №5? Да, см. Ниже!). Мои руководящие принципы при выборе:
- Держите его чистым
- Сделайте это простым
- Сделайте его расширяемым
# 1 - Модуль профиля контента
Это будет чистое решение, так как вы упростите для разработчика поддержку вашего кода, поскольку все изменения для пользователя будут проходить через тот же канал, и это будет будет проще отслеживать проблемы или добавлять новые функции.
Я не считаю его особенно простым, поскольку он требует от вас взаимодействия с пользовательским API этого модуля.
Что касается расширяемости, это зависит от того, насколько хорошо разработан API модуля профиля контента. Может возникнуть соблазн просто использовать таблицы, созданные указанным модулем, для ваших целей, минуя API, но это подвергает вас возможности того, что в один прекрасный день, когда вы торопитесь, при критическом обновлении безопасности вся система выйдет из строя из-за схема изменилась ...
# 4 - Создание собственной таблицы
Это было бы чистым решением, потому что вы могли бы спроектировать свою таблицу (и свой модуль так, чтобы он делал именно то, что вам нужно), и вы могли бы создать свой собственный API, который будет использоваться другие модули. С другой стороны, вы можете ввести еще один фрагмент кода, изменяющий процесс регистрации, и это может затруднить разработчикам отслеживание проблем и последовательное расширение системы.
Это было бы очень просто для реализации кода. Однако дизайн БД также выиграет: еще одна вещь, которую следует учитывать, - это то, что таблицы будет очень легко проверять и запрашивать. Создать новый обработчик для представлений в большинстве случаев очень просто: в 4 из 5 случаев вы просто используете один из объектов-прототипов, поставляемых вместе с представлениями.
Конечно, это было бы чрезвычайно легко расширить. После того, как вы создали модуль для одного поля, вы можете управлять любым количеством полей, в основном копируя / вставляя код для одного поля в другое (или наследуя от того же предка, если вы перейдете в ООП).
Я понимаю, что вы уже знакомы с drupal, но если вам нужен указатель на то, как это сделать, я дал некоторое направление в этот другой ответ.
# 5 - Создание собственной таблицы и перенос туда уже существующих полей
По сути, это было бы # 4 без недостатка функции рассеивания по различным модулям ... Конечно, если вы уже управляете 200 полями другим способом, это не жизнеспособный вариант, но если вы на ранней стадии своего дизайна, вы можете рассмотреть это .
По моему опыту, почти каждый проект, требующий системной интеграции (что означает: синхронизация данных для одного и того же пользователя в нескольких системах), имеет индивидуальные потребности для регистрации пользователей, и я нашел это решение, которое лучше всего соответствует моим потребностям по двум причинам:
- Я обнаружил, что повторно использую много пользовательского кода, который написал от проекта к проекту.
- Это наиболее гибкий способ интеграции данных с другой системой (в некоторых случаях я даже разделяю данные для пользователя на две настраиваемые таблицы, управляемые одним и тем же модулем: одна, содержащая настраиваемые поля, используемые только drupal, и одно, которое содержит «невидимые поля», как вы их называете. Я нахожу это очень удобным во многих сценариях, так как позволяет очень легко проверять и управлять данными двух систем по отдельности.
HTH!
person
mac
schedule
16.12.2009