dove inserire il codice nel modello MVC

2

Recentemente ho imparato ad imparare PHP e MySQL e sto cercando di costruire un piccolo sistema di utenti come esercizio di codifica. Mentre imparavo ad usare le classi e le funzioni, mi sono imbattuto nel modello MVC e vorrei implementare il modello nel mio codice.

Il seguente approccio è corretto MVC?

  • index.php, message.php, user.php sono tutti un gruppo di controller. Iniziano un modello, raccolgono i dati utente $ _GET, $ _POST e $ _SESSION e li trasmettono al modello. Possono raccogliere informazioni dal modello e trasmetterle alle viste.

  • la classe utente, la classe messaggio, ecc ... sono tutte parti del modello. Convalidano i dati forniti dal controller, eseguono le informazioni sul database e restituiscono i dati al controller e alla vista.

  • le viste sono confuse dal controller. Principalmente echo i dati dal modello & il controller e include i file html.

La mia preoccupazione principale è come la vista mostra i dati dal modello. È meglio passare attraverso il controller o dovrei ottenerlo direttamente dal metodo ogni volta che posso?

    
posta Max 22.06.2016 - 16:45
fonte

2 risposte

2

La tua comprensione è corretta. Tieni presente che i diversi framework utilizzano approcci diversi, quindi qualcosa che, ad esempio, si applicherebbe a Laravel non si applicherà necessariamente, diciamo, a Symfony.

Questo è particolarmente vero quando si tratta di decidere dove va la logica: alcune strutture usano i modelli come oggetti di base contenenti dati, ma praticamente nessuna logica da soli. Altri framework ti incoraggiano a spostare una certa logica dai controller ai modelli.

Alcuni commenti:

  • Perché il tuo controller ha chiamato index.php ? Di solito, l'applicazione ha diversi controller con i nomi che indicano il loro scopo. Ad esempio, un sito di e-commerce può avere un file products.php che contiene la logica del controller che gestisce le richieste link ..., customers.php file per materiale correlato al cliente, cart.php per indovinare cosa, ecc.

    A meno che tu non abbia directory separate per ognuna di esse, come /products/index.php , customers/index.php e cart/index.php , stai mettendo tutta la logica nello stesso file. Di conseguenza, anche se il file è attualmente piccolo, crescerà nel tempo e diventerà molto difficile da mantenere.

  • Mentre la convalida dell'input all'interno di un controller è un approccio perfettamente valido, alcuni framework spostano la logica di convalida dal controller a (1) il modello e (2) il framework stesso. Non conosco framework PHP, quindi fornirò un esempio di ASP.NET MVC: in genere, le proprietà all'interno dei modelli hanno attributi specifici che indicano come devono essere convalidati. Quindi, la logica di convalida di base viene applicata dal framework stesso durante la mappatura.

risposta data 22.06.2016 - 17:10
fonte
-1

Uno dei vantaggi dell'utilizzo di Visual Studio per Asp.NET MVC è la separazione. Quando sviluppo qualcosa usando CakePHP, sembra che tutto venga confuso con pochi singoli file e il codice diventerà goffo. Se stai ancora seguendo la strada di MVC (che consiglio vivamente), potresti provare DJango o anche Asp.NET MVC con l'edizione community di Visual Studio. DJango ha persino un proprio ORM integrato per gestire tutte le esigenze del tuo database se non ti dispiace passare a Python.

    
risposta data 23.06.2016 - 15:45
fonte

Leggi altre domande sui tag