Где хранить имя таблицы?

Вопрос чисто по дизайну и архитектуре приложения на PHP. Есть варианты:
1) Нигде не хранить имя таблицы и задавать в запросах, недостатки понятны
2) Хранить имя в переменной в классе, например private $mysql_table = 'articles';
3) Брать имя таблица из имени класса, например у меня class ArticlesModel, значит 'articles' это и есть имя таблицы. Таким образом я лишусь возможности обращаться к БД в контроллерах, ведь один контроллер может разруливать действия для нескольких похожих сущностей и он будет вынужден передать обработку в модель, и это хорошо, это накладывает строгое органичение на архитектуру.

Но в последнем случае непонятно как разобраться с ситуацией когда есть второстепенные таблицы. Например у статьи есть теги, соответственно есть AtriclesModel и TagModel но есть ещё промежуточная таблица, реализующая их связь и у неё нет своего класса...
  • Вопрос задан
  • 177 просмотров
Решения вопроса 6
@ipokos
Это не ответ, а вопрос на вопрос)
Нигде не хранить имя таблицы и задавать в запросах, недостатки понятны

Подскажите, какие недостатки? (действительно не понимаю проблемы)
Ответ написан
dmitriylanets
@dmitriylanets
веб-разработчик
Свойство однозначно
Ответ написан
@alexdora
Топ-менеджер корпорации
Да, мне тоже не понятны недостатки 1-й схемы. Для меня PHP хобби и я делаю всякие полезности для работы, автоматизация. Раньше меня что-то на перфекционизм тянуло и я старался писать красивый код, с архитектурой-свистелками-пирделками-пищалками (т.е красивый сам для себя и только для себя). Сейчас я пишу довольно грязный код, но довожу дело до конца.

Все что касается SQL запросов, то после появление PDO все максимально упростилось визуально. И работая с PDO частенько приходишь к тому что идет долбанный СMD+C CMD+V. Далее ты правишь имя таблицы и вторую часть запроса. Если тебе надо поменять в один момент название таблицы везде, выделяешь все документы в редакторе и делаешь Find All - Replace All.
Я хочу сказать, что вы этим вопросом показываете то что готовы уложить время на несуществующие трудности и стоит об этом задуматься.
На меня много программистов работает и сейчас я требую чтоб они писали так, чтоб работало – а потом пусть потратят время на оптимизацию и красивости. Иначе на красивости часто уходит времени столько, что проекты не доводятся до конца. А если разработчик вы опытный, то частенько идет копи-паст из предыдущих проектов. Притом копируются солидные куски, не побоюсь назвать цифру в >80% кода – копия с других проектов.
PS:
Лучше когда сделаете по простому, придите на тостер и спросите: Вот сделал проект, все работает. Хочу оптимизировать. Что посоветуете.
Ответ написан
solotony
@solotony
code for food, caviar preferably
В любом из вариантов есть как "+" так и "-" . Подобные вещи решаются исходя из задачи. Если Вы делаете уникальную систему - один подход, если вы делаете фреймворк - другой, если СМS где предполагается установка 100 копий на 1 бд - третий

а без проекта это обсуждение сферического коня в вакууме.
Ответ написан
gobananas
@gobananas
finishhim.ru
Обычно второй вариант реализуют. Можно и третий но система тогда должна быть хорошо документирована.
Ответ написан
Хранить имя таблицы в статичном методе, например:
class ArticlesModel 
{
    public static function tableName()
    {
        retrun 'articles';
    }
}

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

Для промежуточной таблицы создать класс, аналогичный AtriclesModel и TagModel
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы