php reference architecture / design / folder structure

1

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?

    
posta Andre 11.12.2017 - 14:52
fonte

1 risposta

2

Penso che la maggior parte della lotta che si prova possa essere facilmente evitata usando un framework. Quindi, a meno che il tuo progetto non stia usando PHP bare-bone, usa un framework.

Le persone che creano framework open source impiegano il loro tempo per risolvere questo tipo di problemi in modo da potersi concentrare sulle cose divertenti piuttosto che spenderle cambiando il modo in cui i file sono organizzati.

Per PHP ti consiglio di dare un'occhiata al Progetto Symfony:
link

Ha una base di codice ampia da cui puoi imparare, dato che molti progetti sono basati su symfony o stanno usando i suoi componenti.

C'è anche un elenco di best practice che include informazioni sull'organizzazione della logica di business:
link

Se sei ancora scettico nei confronti dei framework e vuoi continuare senza usarne uno, consiglio anche questo insieme di articoli:

Crea il tuo framework PHP
link

Spero che questo aiuti!

    
risposta data 12.12.2017 - 21:01
fonte

Leggi altre domande sui tag