Attualmente sto lavorando con PHP per sviluppare un'applicazione client server e quindi, sto cercando di progettare un'architettura di riferimento per guidarmi attraverso il mio processo di implementazione.
Mi piace molto la nuova cartella dello stack medio struttura e il modo componente / moduli per farlo, ma anche qui faccio fatica sacco.
Ad esempio:
/<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
C'è un modulo, chiamato "utente" con due diverse viste e controller basati su un modello di dati user.php . È possibile accedere al modello dal database chiamando l'oggetto di accesso ai dati userDao.php .
MVC + Dao mi consente di separare il contenuto e la logica della mia app di preoccupazione e consente anche un accoppiamento lento tra i moduli e una strong coesione all'interno di ciascun modulo.
Ma:
L'utente del modello potrebbe essere qualcosa che ho bisogno anche in altri moduli. Diciamo che abbiamo un evento del modulo, voglio riutilizzare il modello di dati user.php lì, e sarebbe bello usare un elenco di selezione utente basato su userListView.php .
Come faccio? userListView.php contiene tutte le cose di cui ho bisogno, ma è connesso a userListController.php .
È sbagliato / cattivo chiamare un modello di dati da un altro modulo e riutilizzarlo in un altro controller di moduli?
Esiste un modo migliore per creare interfacce tra i moduli, come i servizi che un modulo può chiamare?