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.

  • 🏗️ Osnovni uzorak: MVC dijeli aplikaciju na komponente modela, pogleda i kontrolera.
  • 💾 Model: Interagira s izvorom podataka i pohranjuje poslovnu logiku, često putem Active Recorda.
  • 🎛️ kontroler: Sluša zahtjeve, provjerava ulazne podatke i koordinira model i prikaz.
  • 🖼️ Pregled: Prikazuje podatke kao HTML, CSS i minimalni PHP, oslobođen teške logike.
  • 🔗 Labava veza: Komponente rade neovisno, tako da se rad na front-endu i back-endu može odvijati paralelno.
  • ⚡ Kratke oznake: CodeIgniter prikazi obično koriste kratke PHP echo oznake za čišće predloške.
  • 🔁 Tijek zahtjeva: Kontroler za modeliranje za prikaz, zatim HTML natrag u preglednik.

CodeMVC okvir Igniter-a

Što je MVC?

MVC je kratica za Model-View-Controller. To je arhitektonski obrazac koji aplikaciju dijeli na tri glavne komponente:

  1. Model se bavi poslovnom logikom i interakcijama s bazom podataka.
  2. Kontroler koordinira aktivnosti između modela i pogleda.
  3. 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.

Kako MVC okvir 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.

Kartica s podacima o kupcu generirana od strane Codeupaljač

Pitanja i odgovori

To znači da poslovna logika živi u modelu,ping kontroler tanak i usmjeren na zahtjeve za usmjeravanje. To čini logiku ponovno upotrebljivom, a kontroler lakšim za čitanje i testiranje.

Prikaz bi trebao prikazivati ​​samo podatke. Keeping Logika iz toga odvaja brige, tako da dizajneri mogu uređivati ​​izgled bez dodirivanja poslovnih pravila, a isti podaci mogu se prikazati u različitim prikazima.

Active Record je ugrađeni alat za izradu upita koji omogućuje modelima čitanje i pisanje u bazu podataka s pozivima metoda umjesto sirovog SQL-a. Također pomaže u sprječavanju SQL injekcije putem esca-e.ping vrijednosti.

Umjetna inteligencija može generirati odgovarajuće datoteke kontrolera, modela i prikaza iz opisa značajke te održavati dosljednost imenovanja. Revpregledajte generirane upite i validaciju prije njihovog pokretanja.

Kratka oznaka echo je kompaktan način ispisa vrijednosti u prikazu. Puni php blok oznake koristi se za naredbe i kontrolne strukture. Obje su ekvivalentne za izlaz, ali kratke oznake održavaju prikaze urednima.

Sažmite ovu objavu uz: