Što je MVC?
MVC standardi za Model-View-Control. To je arhitektonski obrazac koji aplikaciju dijeli na tri glavne komponente.
1. Model se bavi poslovnom logikom i interakcijama s bazama podataka
2. Upravljač koordinira aktivnosti između modela i prikaza
3. View je odgovoran za prezentaciju podataka
Slijede neke od prednosti arhitektonskog uzorka MVC
- Labava spojnica - komponente postoje i funkcioniraju neovisno jedna o drugoj.
- Fleksibilnost - lako se mogu napraviti pojedine komponente
- Povećana produktivnost - više osoba može istodobno raditi na projektu. Front-end programeri mogu raditi na prikazima i prezentacijama, dok se pozadinski programeri mogu usredotočiti na modele, a budući da je sustav labavo povezan, radi na kraju dana
U ovom vodiču naučit ćete:
- Što je MVC?
- Model
- Kontroler
- Pogled
- Kako funkcioniraju MVC okviri?
- CodeIgniter kontroler
- Model CodeIgniter
Model
Model je odgovoran za interakciju s izvorima podataka. To je obično baza podataka, ali može biti i usluga koja pruža tražene podatke. Također je uobičajena praksa da poslovna logika bude sadržana u modelima za razliku od kontrolera. Ova se praksa obično naziva mršavim modelom masnog modela.
Model obično zapisuje podatke u bazu podataka, pruža mehanizam za uređivanje i ažuriranje te brisanje podataka. U modernoj web aplikaciji modeli koriste obrasce dizajna pristupa podacima, poput aktivnog zapisa, kako bi olakšali interakciju s bazom podataka.
Na primjer, CodeIgniter koristi ugrađenu knjižnicu Active Record za pomoć modelima, dok drugi okviri, poput Laravela, koriste elokventni objektni relacijski mapper (ORM) koji pomaže pristupu podacima.
Kontroler
Kontroler osluškuje dolazne zahtjeve korisnika za resursima. Djeluje kao posrednik između modela i pogleda, a ponekad primjenjuje i neka poslovna pravila. Recimo da kontrolor primi zahtjev za registraciju korisnika u bazi podataka.
Upravljač može izvršiti provjeru podataka o onome što je predano kako bi osigurao da su predani svi potrebni parametri. Ako nešto nedostaje, korisnik se preusmjerava na stranicu za registraciju s prikazanom odgovarajućom porukom o pogrešci. Upravljač također može zatražiti od modela da izvrši više provjera provjerom da li poslana adresa e-pošte već postoji. Ako prođu sva pravila provjere valjanosti, kontrolor predaje podatke modelu na postupak i čeka odgovor.
Nakon što model obradi informacije i vrati pozitivan odgovor, kontroler učita odgovarajući prikaz i kao parametar preda podatke vraćene iz modela.
Pogled
Prikaz se bavi podacima predstavljenim krajnjem korisniku. U web aplikacijama pogledi često sadrže HTML, CSS i po želji JavaScript. Pregledi sadrže minimalni programski kod. Kôd sadržan u prikazima obično se koristi za prolazak kroz zbirke podataka primljenih kao parametri od modela ili pomoćne funkcije za čišćenje podataka ili stvaranje veza za uređivanje zapisa. Većina modernih web aplikacija obično koristi mehanizme za izradu predložaka koji definiraju vlastitu sintaksu koja je više poput pseudo koda i koju dizajneri mogu lako razumjeti. U radu s CodeIgniterom uobičajena je praksa koristiti kratke PHP oznake i kontrolne strukture. Da biste prikazali nešto u CodeIgniteru, može se upotrijebiti sljedeći kod
Za razliku od
Kontrolne strukture obično se pišu kako slijedi
Kao što možete vidjeti iz gornjeg primjera, pogled će koristiti kombinaciju PHP-a i HTML-a, umjesto da sve zatvori u čisti PHP kôd.
Kako funkcioniraju MVC okviri?
Sljedeća slika prikazuje rad MVC okvira
Kontrolor prima zahtjev od korisnika, prema potrebi stupa u interakciju s modelom baze podataka, a zatim vraća rezultat natrag u preglednik u obliku HTML koda koji je preglednik protumačio u čitljiv format i prikazao korisniku.
CodeIgniter kontroler
Idemo sada raščlaniti što se upravo dogodilo kad smo gornji URL učitali u web preglednik.
Otvorite datoteku Welcome.php kontroler koji se nalazi u aplikaciji / kontrolerima
Morali biste vidjeti sljedeći kod
load->view('welcome_message');}}
OVDJE,
- definirano ('BASEPATH') ILI izlaz ('Nije dopušten izravni pristup skripti'); sprječava izravan pristup kontroloru ako zahtjev nije došao putem index.php. ovo je iz sigurnosnih razloga.
- klasa Welcome proširuje CI_Controller {…} definira klasu kontrolora dobrodošlice i proširuje roditeljsku klasu CI_Controller
- indeks javne funkcije () {…} definira metodu indeksa koja odgovara na URL http: // localhost: 3000
- $ this-> load-> view ('welcome_message'); učitava pogled dobrodošlice koji se nalazi u direktoriju aplikacija / pogleda
Sada ćemo ažurirati metodu indeksa kako slijedi
public function index(){$this->load->model('customers_model');$data['customer'] = $this->customers_model->get_customer(3);$this->load->view('welcome_message',$data);}
OVDJE,
- $ this-> load-> model ('customers_model'); učitava model kupaca.
- $ data ['kupac'] = $ ovo-> kupci_model-> get_customer (3); poziva get_customer metodu customers_model i predaje parametar 3. U ovom smo primjeru teško kodirali vrijednost, ali u stvarnim aplikacijama to bi bio parametar iz URI-ja.
- $ this-> load-> view ('welcome_message', $ data); učitava prikaz welcome_message i prosljeđuje varijablu $ data u pogled
Model CodeIgniter
Stvorimo sada pogled na koji smo se pozivali u gornjem kodu. Radi jednostavnosti, naš model neće komunicirati s bazom podataka, već će vratiti statički korisnički zapis. U sljedećim ćemo tutorijalima raditi s bazama podataka.
Stvorite datoteku Customers_model.php u aplikaciji / modelima
Dodajte sljedeći kod
OVDJE,
- klasa Customers_model extends CI_Model {…} definira model Customers_model koji proširuje CI_Model.
- javna funkcija get_customer ($ id) {…} definira metodu dobivanja kupca na temelju korisničkog ID-a
- $ data […] definira statičke vrijednosti našeg fiktivnog kupca. Ovo bi trebao biti redak vraćen iz baze podataka.
- vratiti $ podataka; vraća podatke o kupcu.
Odnosno, to je za naš model. Izmijenimo sada prikaz welcome_message
Otvorite welcome_message.php koji se nalazi u
application/views/welcome_message.php
Zamijenite kod sljedećim
CodeIgniter MVC Basics Customer Details Card
Customer ID :
First Name :
Last Name :
Address :
Spremite promjene
U web-preglednik učitajte sljedeći URL
http: // localhost: 3000 /
Morali biste vidjeti karticu kupca kao što je prikazano na donjoj slici
Sažetak
- MVC je arhitektonski obrazac koji aplikaciju dijeli na tri glavne komponente
- Model je odgovoran za interakciju s izvorima podataka
- Kontroler osluškuje dolazne zahtjeve korisnika za resursima
- U web aplikacijama pogledi često sadrže HTML, CSS i po želji JavaScript
- Kontrolor prima zahtjev od korisnika, po potrebi komunicira s modelom baze podataka, a zatim vraća rezultat natrag u preglednik u obliku HTML koda