Revisione della struttura dell'applicazione Web

4

Mi piacerebbe avere suggerimenti sulla struttura della mia applicazione web.

Che cosa fa l'app:
La mia app riceve file da circa 800 scanner nel mio paese e gli utenti vedono le pagine scansionate in questa applicazione web, quindi possono organizzare le pagine in gruppi, scegliere quale mantenere e quale scartare e inserire alcune informazioni aggiuntive per ciascun gruppo.
Dopo questo, un altro tipo di utente controlla cosa ha fatto il primo tipo di utente e approva o scarta ogni gruppo di pagine.
Dopodiché, una procedura su un altro server trasforma ciascun gruppo in più pagine PDF e TIFF.

Dopo questo piccolo background per avere un'idea di cosa fa la mia web app, ecco come appare la struttura dei file:

ajax
|- ajaxaction1.php
|- ajaxactionx.php

cache
|- xxx_xxxxxxxxxxxx.gif

css
|- style.min.css
|- font-awesome.min.css

fonts
| here there are the fonts needed by font-awesome.min.css

js
|-functions.min.js
|-main.min.js
|-jquery.x.x.x.min.js
|-jquery.x.x.x.min.map
|-jquery.lib1.min.js
|-jquery.libx.min.js

views
|-features.php
|-features.tpl

config.ini // DB configuration file
index.php // the page that is used by the application
init.php // read description below
web.config // used to restrict access to only the right files

Ajax:
Cartella in cui sono presenti script PHP che vengono chiamati da Ajax per eseguire query INSERT e UPDATE sul database.

della cache:
Cartella in cui sono presenti file .gif temporanei estratti dalle pagine scansionate inviate dagli scanner al mio server.
Queste immagini rimangono qui solo il tempo necessario per elaborarle, quindi vengono eliminate.

css:
Qui sono memorizzati gli unici due file CSS necessari per la mia app Web.

JS:
in questa cartella sono memorizzati tutti i file JS.
functions.min.js è un file in cui dichiaro tutte le funzioni javascript
main.min.js è dove vengono chiamate le funzioni

viste:
Qui memorizzo i file PHP e TPL che vengono caricati da AJAX per mostrare le pagine richieste.
I file PHP eseguono query su DB e preparano una matrice, quindi i file TPL ottengono la matrice e stampano il markup.

init.php: In questo file eseguo la connessione al database e inizializzo la sessione $ pdo.
Verifico anche che l'utente abbia effettuato correttamente il login (utilizzo un solo segnale di accesso fornito da un software esterno per accedere agli utenti).
Qui ho anche impostato alcune comuni funzioni PHP utilizzate negli altri script PHP.
Questo script è incluso in ogni pagina PHP.


Mi piacerebbe avere recensioni su come ho organizzato i file e le cartelle della mia applicazione.

    
posta Fez Vrasta 18.11.2013 - 21:22
fonte

3 risposte

1

Suggerirei di seguire MVC perché nel layout corrente non vedo la separazione delle funzionalità nel codice. Per esempio. raggruppare il codice in ajax significa che ogni file è responsabile del recupero e dell'elaborazione dei dati (Modello), presentandoli al client (Controller) e alla formattazione (Visualizza).

Modifica per chiarire se il layout corrente era già simile a MVC, non è chiaro che lo sia. Guardando i file .php, non si può dire che i file .php nelle viste / siano controllori / modelli, ma solitamente quando si utilizzano i modelli, solo .tpl appartiene a views /. Quindi, per risolvere il problema, lo abbiamo per mantenere viste / *. php insieme ad altri .php in ajax /, per esempio in src /.

Se lo fai, allora sarà chiaro che hai View in views / e Model and Controller in src /. Quindi il passo successivo è rompere src / to models / and controller /. Non è facile come spostare i file perché è necessario suddividere anche i file. Per esempio. lo dici i file Ajax eseguono INSERT e UPDATE. Quelle parti che lo fanno dovrebbero essere collocate in file separati e in modelli /. Dopo aver rimosso quelle parti dai file originali, puoi metterli insieme come controller. Questo è abbastanza approssimativo, ma dovrebbe essere abbastanza chiaro.

Quindi, dal tuo attuale layout, inserisco e spezza i file php in controller / e model /, metti i file .tpl in vista / e metto tutti gli altri file che devono essere accessibili al pubblico (.js, .css , ecc.) in pubblico /. Inoltre, inserisci la libreria di terze parti in una directory separata, ad esempio vendor /.

Potresti anche prendere in considerazione l'utilizzo di un framework MVC, che molto probabilmente creerà / suggerirà un layout per te. Avvertenza Ho solo scritto per rendere la parte php MVC. Poiché sembra che javascript sia utilizzato in modo sostanziale, puoi rendere javascript anche MVC.

    
risposta data 20.11.2013 - 05:48
fonte
3

La struttura della directory è chiara e organizzata in un buon modo. È una buona idea organizzare come hai fatto.

Cosa potresti fare più tardi, se necessario (principalmente a seconda della dimensione corrente), è dividere il init.php in parti separate come:

  • funzioni-database.php
  • funzioni-login.php
  • funzioni-common.php

Devo dire che mi piace soprattutto il nome del file "font-awesome.min.css"

    
risposta data 18.11.2013 - 22:04
fonte
2

Separazione
Per le dipendenze esterne (librerie di terze parti), suggerirei di separarle da quelle personalizzate.

Crea una cartella lib in css e js .
Assicurati che il relativo percorso dell'immagine sia modificato nei file css, se presenti.

css
|- style.min.css
   lib
   |- font-awesome.min.css

js
|- functions.min.js
|- main.min.js
   lib
   |-jquery.x.x.x.min.js
   |-jquery.x.x.x.min.map
   |-jquery.lib1.min.js
   |-jquery.libx.min.js

OR

js
|- functions.min.js
|- main.min.js
   lib
       |-jquery
           |-jquery.x.x.x.min.js
           |-jquery.x.x.x.min.map
           |-jquery.lib1.min.js
           |-jquery.libx.min.js

Quindi è meno probabile che modifichi accidentalmente quei framework e queste librerie.

Coerenza
Utilizza in modo appropriato la forma singolare o plurale del nome.

Cambia cartella cache in caches per la corrispondenza con views .

Include
Come detto in un'altra risposta, nel tuo caso i moduli dovrebbero essere separati in diversi file. Non solo ai fini di una chiara gerarchia delle directory, ma anche per il problema delle prestazioni e della sicurezza.

Extra
Usa la cartella images per la memorizzazione delle immagini.

Utilizza una cartella specifica (ad esempio data ) per il salvataggio dei dati.

Per ulteriori esempi e pratiche, puoi fare riferimento a SO: Directory Structure per MVC

    
risposta data 19.11.2013 - 08:19
fonte

Leggi altre domande sui tag