Ok, it’s my fault. I’ve never ever learned programming at a school and that’s why i’m always ending up in a spaghetti code. I’ve always curious about different patterns and tried to understand them at least in a basic level.
MVC is my worst fear and i think i’ll be never able to use it’s advantages because of i don’t understand it’s fundamentals.
My actual question/problem looks like:
The front controller calls a ‘Core’ class which is doing some initialization then it calls the actual controller with the correct action/parameters. The controllers always extending the ‘Core’ class so i can acces it’s variables, etc. They’re working nicely together but here comes my real problem.
Some kind of methods (getting a database entry in most of the cases) are required in different cases. (e.g. a product needs it’s manufacturer)
In this scenario i have two (bad) choices:
- Inject the required method into the ‘Core’ class so it’s getting bloated over time
- Inject the required method into the actually called controller so i will end up a redundant codebase
I see a lot of possible problems in my approach:
- Controllers are always extending ‘Core’ class
- ‘Core’ controller holds the database object so without it i cannot access my Db
- Database functions (e.g. getting a product) are in the controllers but i cannot access them because they’re always calling ‘Core’ first (extending problem again)
Please tell me:
Where is the biggest problem in my approach and where can i correct it?
Note:
Please don’t treat this as a general question, i think this is an answerable thing. If you need some clarification, please ask for it and i’ll try to lighten up things.
Thanks for your precious time, fabrik
Your biggest problem is having the “Core” class, get rid of it asap.
By the way, the FrontController is not the only way to do things MVC things either.
Your second problem is that controller deals with database, it shouldn’t. I suggest you use some abstract data layer, which you use only in your models. And controller should deal only with models, it shouldn’t care how models get their data persisted and fetched.