Я должен начать с того, что я не сейчас, и у меня нет никаких заблуждений, что я когда-нибудь стану профессиональным программистом, так что большинство моих навыков были извлечены из опыта, в основном как хобби.
Я выучил PHP, поскольку он казался хорошим простым введением в некоторых областях и позволил мне разрабатывать простые веб-приложения.
Когда я узнал об объектах, классах и т. Д., Базовые примеры преподавателя охватывали идею о том, что, как правило, каждая таблица базы данных должна иметь свой собственный класс. Хотя это хорошо работает для проекта фотогалереи, который мы написали, так как у него были очень простые запросы MySQL, он работает не так хорошо, теперь мои проекты становятся все более сложными. Если мне требуются данные из двух отдельных таблиц, для которых требуется объединение таблиц, я вместо этого полностью игнорирую класс и обрабатываю его в каждом конкретном случае, ИЛИ, что еще хуже, объединяю некоторые данные в класс, а остальные как отдельная сущность и выполнение двух запросов, что мне кажется неэффективным.
Например, при просмотре контента на форуме, который я написал, если вы просматриваете ветку, я извлекаю данные из таблицы тем, таблицы сообщений и таблицы пользователей. Запросы из таблицы user и posts извлекаются через соединение, а не создаются в виде объекта, в то время как данные потока вызываются с использованием моего класса Threads.
Итак, как мне перейти от моего текущего положения к чему-то немного менее «глупому», из-за отсутствия лучшего слова. Прямо сейчас у меня есть класс БД, который имеет дело с подключением и экранированием значений и т. Д., Родительский класс запросов БД, который имеет дело с общими запросами и методами, и все другие классы (Thread, Upload, Session, Photo и те, которые не являются Используется почта, пользователь и т. д.) являются детьми этого.
Сделать ли класс больших сообщений, который имеет соответствующие дополнительные атрибуты, которые я получаю из таблицы пользователей (и, возможно, тем)?
Есть ли у меня отдельные классы, которые заполняют каждый из соответствующих атрибутов одним запросом? Если да, то как мне это сделать?
Из-за того, как написаны мои классы, основываясь на том, что меня учили, мой метод обновления строки DB или метод вставки просто принимают атрибуты в виде массива и обновляют все это, если у меня есть дополнительные атрибуты из других таблиц DB в каждом тогда как мне переписать эти методы, так как автоматическое обновление автоматически приведет к ошибкам?
Короче говоря, я думаю, что мое понимание сейчас ограничено, и я хотел бы получить некоторые подсказки, когда речь заходит об основах написания более сложных классов.
Редактировать:
Спасибо за ответы, пока они дали мне много советов и мыслей и много материала для чтения. Однако мне хотелось бы узнать, как разные люди решили обрабатывать простые таблицы с любым количеством классов? Вы добавили атрибуты в классы? Запрос извне класса, а затем передать результаты в каждый класс? Что-то другое?