CodePrimjer okvira Igniter MVC (Model View Controller)
โก Pametni saลพetak
CodeIgniter MVC Framework dijeli aplikaciju na Model, View i Controller. Model obraฤuje podatke i poslovnu logiku, controller koordinira zahtjeve, a view predstavlja rezultat, pruลพajuฤi labavu povezanost, fleksibilnost i veฤu produktivnost programera.

ล to je MVC?
MVC je kratica za Model-View-Controller. To je arhitektonski obrazac koji aplikaciju dijeli na tri glavne komponente:
- Model se bavi poslovnom logikom i interakcijama s bazom podataka.
- Kontroler koordinira aktivnosti izmeฤu modela i pogleda.
- Prikaz je odgovoran za prikaz podataka.
Neke od prednosti MVC arhitektonskog obrasca su sljedeฤe:
- Labava veza โ komponente postoje i funkcioniraju neovisno jedna o drugoj.
- Fleksibilnost โ moลพete lako mijenjati pojedinaฤne komponente.
- Poveฤana produktivnost โ viลกe osoba moลพe istovremeno raditi na projektu. Front-end programeri mogu raditi na prikazima i prezentacijama, dok se back-end programeri usredotoฤuju na modele, a buduฤi da je sustav labavo povezan, na kraju sve funkcionira zajedno.
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 zadrลพati poslovnu logiku u modelima, a ne u kontroleru. Ova se praksa obiฤno naziva โdebeli model, mrลกavi kontrolerโ.
Model obiฤno zapisuje podatke u bazu podataka i pruลพa mehanizam za ureฤivanje, aลพuriranje i brisanje podataka. U modernoj web aplikaciji, modeli koriste obrasce dizajna za pristup podacima kao ลกto je Active Record kako bi olakลกali interakciju s bazom podataka.
Na primjer, CodeIgniter koristi ugraฤenu Active Record biblioteku za pomoฤ modelima, dok drugi okviri poput Laravela koriste Eloquent Object Relational Mapper (ORM) za pristup podacima.
kontrolor
Kontroler osluลกkuje dolazne zahtjeve za resursima od korisnika. Djeluje kao posrednik izmeฤu modela i prikaza, a ponekad implementira i neka poslovna pravila. Pretpostavimo da kontroler primi zahtjev za registraciju korisnika u bazi podataka.
Kontroler moลพe izvrลกiti validaciju podataka o onome ลกto je poslano kako bi se osiguralo da su prisutni svi potrebni parametri. Ako neลกto nedostaje, korisnik se preusmjerava na stranicu za registraciju s odgovarajuฤom porukom o pogreลกci. Kontroler takoฤer moลพe zatraลพiti od modela da izvrลกi dodatnu validaciju, poput provjere postoji li veฤ poslana adresa e-poลกte. Ako sva pravila validacije proฤu, kontroler ลกalje podatke modelu na obradu i ฤeka odgovor.
Nakon ลกto je model obradio informacije i vratio pozitivan odgovor, kontroler uฤitava odgovarajuฤi prikaz i prosljeฤuje podatke vraฤene iz modela kao parametar.
Pogled
Prikaz se bavi podacima prikazanim krajnjem korisniku. U web aplikacijama prikazi ฤesto sadrลพe HTML, CSS i opcionalno JavaScriptPrikazi sadrลพe minimalni programski kod, obiฤno tek toliko da se proฤe kroz zbirke podataka primljenih iz modela, ili pomoฤnu funkciju za ฤiลกฤenje podataka ili stvaranje poveznica za ureฤivanje. Veฤina modernih web aplikacija koristi mehanizme za izradu predloลพaka s vlastitom sintaksom sliฤnom pseudokodu koju dizajneri mogu razumjeti. Pri radu s CodeIgniter, uobiฤajena je praksa koriลกtenje kratkih PHP oznaka i kontrolnih struktura. Za prikaz neฤega u CodeIgniter, moลพete koristiti sljedeฤi kod:
<?=$title?>
Za razliku od:
<?php
echo $title;
?>
Kontrolne strukture se obiฤno piลกu na sljedeฤi naฤin:
<?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?></p> </li> <?php endforeach; ?>
Kao ลกto moลพete vidjeti iz gornjeg primjera, prikaz koristi kombinaciju PHP i HTML umjesto da sve zatvorite u ฤisti PHP kod.
Kako funkcioniraju MVC okviri
Sljedeฤa slika prikazuje kako MVC framework funkcionira.
Kontroler prima zahtjev od korisnika, po potrebi komunicira s modelom baze podataka, a zatim vraฤa rezultat pregledniku u obliku HTML koda, koji preglednik interpretira u format ฤitljiv ljudima i prikazuje korisniku.
CodeKontroler paljenja
Sada ฤemo analizirati ลกto se dogodilo kada smo utovarili URL u web preglednik. Otvorite datoteku Welcome.php controller koja se nalazi u application/controllers. Trebali biste vidjeti sljedeฤi kod:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
Ovdje:
- defined('BASEPATH') ILI exit('Nije dopuลกten izravan pristup skripti'); sprjeฤava izravan pristup kontroleru ako zahtjev nije doลกao putem index.php. To je iz sigurnosnih razloga.
- klasa Welcome extends CI_Controller {โฆ} definira klasu kontrolera Welcome i proลกiruje roditeljsku klasu CI_Controller.
- javna funkcija index(){โฆ} definira metodu indeksiranja koja odgovara na URL
http://localhost:3000. - $this->load->view('welcome_message'); uฤitava prikaz welcome_message koji se nalazi u direktoriju application/views.
Sada ฤemo aลพurirati metodu indeksiranja na sljedeฤi naฤin:
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('model_kupaca'); uฤitava model kupaca.
- $data['customer'] = $this->customers_model->get_customer(3); poziva metodu get_customer od customers_model i prosljeฤuje parametar 3. U ovom primjeru imamo fiksno kodiranu 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.
CodeModel upaljaฤa
Sada stvorimo model na koji se referira u gornjem kodu. Radi jednostavnosti, naลก model neฤe komunicirati s baza podataka ali ฤe vratiti statiฤki zapis o kupcu. U sljedeฤim tutorijalima radit ฤemo s bazama podataka. Izradite datoteku Customers_model.php u application/models i dodajte sljedeฤi kod:
<?php class Customers_model extends CI_Model { public function get_customer($id) { $data['id'] = 3; $data['first_name'] = 'John'; $data['last_name'] = 'Doe'; $data['address'] = 'Kingstone'; return $data; } }
Ovdje:
- klasa Customers_model extends CI_Model {โฆ} definira model Customers_model koji proลกiruje CI_Model.
- Javna funkcija get_customer($id) {โฆ} definira metodu get_customer na temelju ID-a kupca.
- $data[โฆ] definira statiฤke vrijednosti naลกeg fiktivnog kupca. Ovo bi trebao biti redak vraฤen iz baze podataka.
- vratiti $podatke; vraฤa podatke kupca.
To je to za naลก model. Sada modificirajmo prikaz welcome_message. Otvorite welcome_message.php koji se nalazi u:
application/views/welcome_message.php
Zamijenite kod sljedeฤim:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>CodeIgniter MVC Basics</title> </head> <body> <h1>Customer Details Card</h1> <p>Customer ID : <strong><?=$customer['id']?></strong></p> <p>First Name : <strong><?=$customer['first_name']?></strong></p> <p>Last Name : <strong><?=$customer['last_name']?></strong></p> <p>Address : <strong><?=$customer['address']?></strong></p> </body> </html>
Spremi promjene i uฤitaj sljedeฤe URL u web pregledniku: http://localhost:3000/Trebali biste vidjeti karticu kupca kao ลกto je prikazano na slici ispod.


