Хорошо, это моя вина. Я никогда не учился программированию в школе, и поэтому я всегда получаю код спагетти. Мне всегда нравятся разные шаблоны и они стараются понять их хотя бы на базовом уровне.Полностью сбой в OOP/MVC
MVC - мой самый страшный страх, и я думаю, что я никогда не смогу использовать его преимущества из-за того, что я не понимаю его основ.
Моей актуальный вопрос/проблема выглядит следующим образом:
Фронт-контроллер вызывает класс «ядро», который делают некоторые инициализации, то он вызывает фактический контроллер с правильными действиями/параметрами. Контроллеры всегда расширяют класс Core, поэтому я могу использовать его переменные и т. Д. Они прекрасно работают вместе, но вот моя настоящая проблема.
В разных случаях требуются некоторые методы (получение записи базы данных в большинстве случаев). (Например, продукт должен это производитель)
В этом случае у меня есть два (плохой) выбор:
- Вводите нужный метод в класс «ядро», так что становится раздутым в течение долгого времени
- впрыснуть требуется метод в действительности называется контроллером, так что я в конечном итоге избыточный кодовую
Я вижу много возможных проблем в моем подходе:
- Контроллеры всегда расширяя класс «ядро»
- контроллер «ядро» удерживает объект базы данных, так и без него я не могу получить доступ к Db
- функции базы данных (например, получение продукта) в контроллерах, но я не могу получить доступ к ним, потому что они всегда называя первую (расширяющую проблемой «ядром» снова)
Пожалуйста, скажите мне:
Где самая большая проблема в моем подходе и где я могу это исправить?
Примечание:
Пожалуйста, не рассматривать это как общий вопрос, я думаю, что это отвечает вещь. Если вам нужно какое-то разъяснение, попросите его, и я постараюсь облегчить ситуацию.
Спасибо за ваше драгоценное время, Fabrik
Расширение «основного» класса звучит как epic oo. :) Вместо этого введите базу данных в контроллер. Кроме того, вам нужен только один контроллер, а не передний контроллер и «фактический контроллер». – bzlm
@bzlm: Я вижу точку в вашем комментарии, но я не вижу правильного пути. «Core» был создан для хранения множества часто используемых важных методов/переменных. Где я могу держать их, если не в нем? Фронтальный контроллер выполняет свою работу точно, как угодно (диспетчер и т. Д.), Это важно. – fabrik
Посмотрите этот ответ и его комментарии http://stackoverflow.com/questions/3626955/totally-failed-in-oop-mvc/3627102#3627102 – bzlm