I am currently working with PHP to develop a server client application and therefore, I am trying to design a reference architecture to guide me through my implementation process.
I really like the new mean stack folder structure and the component/modules way to do it but even here I do struggle a lot.
As an example:
/<project-name> index.php /static /css /main.css /js /user userFunctions.js /bower_components /jquery /chart /fontawesome /template-engine ... /scripts /debug.php /checkCodingStyle.php /modules /user userDetailsController.php userListController.php userDetailsView.php userListView.php user.php userDao.php /utils /db mysql.php /log log.php /lib /tests userUnitTest.php
There is one module, called "user" with two different views and controllers based on a data model user.php. The model can be accessed from the database calling the data access object userDao.php.
MVC + Dao allows me to seperate content and logic of my app by concern and also allows loose coupling between modules and strong cohesion inside each module.
The model user might be something that I do need in other modules as well. Say we have a module event, I do want to reuse the data model user.php there, and it would be nice to use a user selection list based on userListView.php.
How do I do that? The userListView.php contains all the things I need, but it is connected to the userListController.php.
Is it wrong / bad when you call a data model from another module and reuse it in another modules controller?
Is there a better way in building up interfaces between modules, like services one module could call?