Laravel usando i modelli

1

Ho iniziato a lavorare con Laravel circa un mese fa e ho iniziato leggendo la documentazione, ecc. Ora sto lavorando su un progetto in Laravel 4.2 e ho saltato alcune parti della documentazione completa. Nel mio attuale progetto non sto usando modelli e i miei colleghi programmatori mi dicono che è bello usare i modelli. So che è abbastanza normale usare solo i modelli in un progetto Laravel e ho letto parti della documentazione dei modelli ormai. Vedo che è un modo chiaro di lavorare con le tabelle, ecc. Ora che sono nel bel mezzo del mio progetto, non so se passare ai modelli ora sarebbe un grande vantaggio. Dal momento che non ho esperienza con i modelli. (Quindi devo imparare dall'inizio). Attualmente sto facendo tutto nei controller. Non vedo lo svantaggio nell'usare il generatore di query di Laravel nel mio controller invece di usare i modelli. Ho intenzione di avviare eventualmente altri progetti con i modelli, ma il passaggio ai modelli in questo momento non sembra la cosa migliore da fare nel bel mezzo del mio progetto.

Questo è un vero progetto. Sto pensando di farlo online e la gente lo userà effettivamente.

Im still a student

Quindi in pratica:

  • C'è un motivo per cui posso passare ai modelli del mio attuale progetto?
  • C'è una differenza di prestazioni tra il mio metodo e i miei modelli?
posta Loko 11.03.2015 - 11:49
fonte

1 risposta

7

La vera domanda che dovresti fare è " Perché dovrebbe Io uso un pattern MVC ". Le ragioni per l'utilizzo di tale modello possono essere spiegate solo quando si ha una comprensione dei principi ai quali i programmatori vogliono aderire per una serie di motivi, ma forse la più importante:

Separazione di dubbi

The value of separation of concerns is simplifying development and maintenance of computer programs. When concerns are well-separated, individual sections can be reused, as well as developed and updated independently. Of special value is the ability to later improve or modify one section of code without having to know the details of other sections, and without having to make corresponding changes to those sections.

Fonte: Wikipedia

Come descritto nel link che ho postato, non implementando 'un po' la separazione delle preoccupazioni può, o porterà, a rendere il codice illeggibile, ingestibile o peggio - semplicemente rotto (esempi? cerca codice spaghetti o big-ball -of-fango)

Esempio semplice:

  • Hai un sito web in cui è possibile acquistare libri.
  • Ci sono 26 pagine diverse (metodi controller) in cui i libri vengono visualizzati o in qualsiasi modo utilizzati (ad esempio gli amministratori devono aggiungere - modificare - eliminare i libri, gli utenti devono aggiungere-modificare-eliminare commenti sui libri, ecc. )

  • Se dovessi implementare tutta la tua "logica del libro" in ciascun metodo del controller, allora:

    1. Tutti i metodi del controller diventeranno sempre più grandi man mano che i libri diventeranno sempre più complessi
    2. Dopo alcune settimane vuoi cambiare qualcosa sul modo in cui i tuoi libri sono visualizzati, devi cambiare tutti i 26 diversi metodi di controllo che li utilizzano.
    3. Dopo un po ', non avrai idea di dove trovare quella riga di codice che assicuri che se un libro non è in vendita per un breve periodo di tempo, non verrà visualizzato da tutti i tuoi controller che hanno qualcosa fare con la vendita di libri
    4. Etc.
    5. Dopo aver hackerato tonnellate di piccoli cambiamenti in tutti i tuoi controller, ottieni la canna fumaria, o fai una lunga e meritata vacanza poco prima di un bug importante - e qualche altro programmatore deve trovarla rapidamente e risolverla senza il vostro aiuto. Crediti a lui se lo risolvesse in modo tempestivo.

Nota: questo è solo un esempio stupido e veloce, con difetti certamente sufficienti, ma riguarda il quadro generale. Ora, pensiamo al nostro progetto quando abbiamo impostato tutta la nostra logica di libro in 1 modello che è riutilizzabile in tutte le nostre pagine. Semplificato significa che dovrai implementare una modifica una volta e che questo dovrebbe rispondere alla tua prima domanda.

    
risposta data 11.03.2015 - 12:43
fonte

Leggi altre domande sui tag