CodeIgniter MVC (mudelivaate kontrolleri) raamistiku näide
⚡ Nutikas kokkuvõte
CodeIgniter MVC raamistik jagab rakenduse mudeliks, vaateks ja kontrolleriks. Mudel haldab andmeid ja äriloogikat, kontroller koordineerib päringuid ning vaade esitab tulemuse, pakkudes vaba seotust, paindlikkust ja suuremat arendaja tootlikkust.

Mis on MVC?
MVC on lühend sõnadest Model-View-Controller. See on arhitektuuriline muster, mis jagab rakenduse kolmeks põhikomponendiks:
- Mudel tegeleb äriloogika ja andmebaasi interaktsioonidega.
- Kontroller koordineerib mudeli ja vaate vahelisi tegevusi.
- Vaade vastutab andmete esitamise eest.
Järgnevalt on toodud mõned MVC arhitektuurimustri eelised:
- Lahtine sidumine – komponendid eksisteerivad ja toimivad üksteisest sõltumatult.
- Paindlikkus – saate hõlpsalt teha muudatusi üksikutes komponentides.
- Suurem tootlikkus – projekti kallal saab korraga töötada rohkem kui üks inimene. Esiosa arendajad saavad töötada vaadete ja esitluste kallal, samal ajal kui tagaosa arendajad keskenduvad mudelitele ning kuna süsteem on lõdvalt seotud, töötab see lõpuks kõik koos.
MUDEL
Mudel vastutab andmeallikatega suhtlemise eest. Tavaliselt on see andmebaas, kuid see võib olla ka teenus, mis pakub taotletud andmeid. Samuti on levinud tava hoida äriloogikat mudelites, mitte kontrolleris. Seda tava nimetatakse tavaliselt „paksuks mudeliks, kitsaks kontrolleriks“.
Tavaliselt kirjutab mudel andmed andmebaasi ja pakub mehhanismi andmete redigeerimiseks, värskendamiseks ja kustutamiseks. Kaasaegses veebirakenduses kasutavad mudelid andmepääsu kujundusmustreid, näiteks Active Record, et muuta andmebaasiga suhtlemine lihtsamaks.
Näiteks CodeIgniter kasutab mudelite abistamiseks sisseehitatud Active Record teeki, samas kui teised raamistikud, näiteks Laravel, kasutavad andmetele juurdepääsuks Eloquent Object Relational Mapperit (ORM).
kontroller
Kontroller kuulab kasutajatelt saabuvaid ressursipäringuid. See toimib vahendajana mudeli ja vaate vahel ning rakendab aeg-ajalt ka mõningaid ärireegleid. Oletame, et kontroller saab päringu kasutaja registreerimiseks andmebaasis.
Kontroller võib esitatud andmete põhjal teha andmete valideerimise, et veenduda kõigi nõutavate parameetrite olemasolus. Kui midagi puudub, suunatakse kasutaja registreerimislehele vastava veateatega. Kontroller võib paluda mudelil teha ka täiendavaid valideerimisi, näiteks kontrollida, kas esitatud e-posti aadress on juba olemas. Kui kõik valideerimisreeglid on edukad, esitab kontroller andmed mudelile töötlemiseks ja ootab vastust.
Kui mudel on teabe töötlenud ja positiivse vastuse andnud, laadib kontroller vastava vaate ja edastab mudelist tagastatud andmed parameetrina.
vaade
Vaade käsitleb lõppkasutajale esitatavaid andmeid. Veebirakendustes sisaldavad vaated sageli HTML-i, CSS-i ja valikuliselt JavaScriptVaated sisaldavad minimaalselt programmeerimiskoodi, tavaliselt vaid nii palju, et mudelilt saadud andmekogumite vahel tsükliga ringi liikuda, või abifunktsiooni andmete puhastamiseks või redigeerimislinkide loomiseks. Enamik tänapäevaseid veebirakendusi kasutab mallimootoreid oma pseudokoodilaadse süntaksiga, millest disainerid aru saavad. Töötades CodeIgniteri puhul on lühikeste PHP-siltide ja juhtimisstruktuuride kasutamine tavaline. Millegi kuvamiseks CodeSüütaja, võiksite kasutada järgmist koodi:
<?=$title?>
Vastupidiselt:
<?php
echo $title;
?>
Juhtimisstruktuurid kirjutatakse tavaliselt järgmiselt:
<?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?></p> </li> <?php endforeach; ?>
Nagu ülaltoodud näitest näha, kasutab vaade järgmiste elementide kombinatsiooni: PHP ja HTML, selle asemel, et panna kõik puhtasse PHP-koodi.
Kuidas MVC raamistikud töötavad
Järgnev pilt näitab, kuidas MVC raamistik töötab.
Kontroller võtab kasutajalt vastu päringu, suhtleb vajadusel andmebaasimudeliga ja tagastab seejärel tulemuse brauserile HTML-koodi kujul, mille brauser tõlgendab inimloetavaks vorminguks ja kuvab kasutajale.
CodeSüütekontroller
Vaatame nüüd lähemalt, mis juhtus laadimise ajal. URL veebibrauserisse. Avage fail Welcome.php controller, mis asub kaustas application/controllers. Peaksite nägema järgmist koodi:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
siin:
- defined('BASEPATH') VÕI exit('Otsene skriptipääs pole lubatud'); takistab otsest juurdepääsu kontrollerile, kui päring ei tulnud läbi index.php. See on turvalisuse huvides.
- Klass Welcome laiendab CI_Controllerit {…} defineerib Welcome kontrolleri klassi ja laiendab ülemklassi CI_Controller.
- avalik funktsioon index(){…} defineerib indeksimeetodi, mis vastab URL
http://localhost:3000. - $this->load->view('welcome_message'); laeb welcome_message vaate, mis asub kataloogis application/views.
Nüüd uuendame indeksi meetodit järgmiselt:
public function index()
{
$this->load->model('customers_model');
$data['customer'] = $this->customers_model->get_customer(3);
$this->load->view('welcome_message',$data);
}
siin:
- $this->load->model('klientide_mudel'); laadib klientide mudeli.
- $data['customer'] = $this->customers_model->get_customer(3); kutsub välja customers_model meetodi get_customer ja annab üle parameetri 3. Selles näites oleme väärtuse kõvakodeerinud, aga tegelikes rakendustes oleks see URI parameeter.
- $this->load->view('welcome_message',$data); laeb welcome_message vaate ja annab sisse muutuja $data.
CodeSüütaja mudel
Loome nüüd ülaltoodud koodis viidatud mudeli. Lihtsuse mõttes ei suhtle meie mudel andmebaas aga tagastab staatilise kliendikirje. Järgmistes õpetustes töötame andmebaasidega. Looge fail Customers_model.php kausta application/models ja lisage järgmine kood:
<?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; } }
siin:
- klass Klientide_mudel laiendab CI_mudel {…} määratleb mudeli Customers_model, mis laiendab CI_mudel.
- avalik funktsioon get_customer($id) {…} defineerib meetodi get_customer kliendi ID põhjal.
- $data[…] määratleb meie fiktiivse kliendi staatilised väärtused. See peaks olema andmebaasist tagastatud rida.
- tagasta $andmed; tagastab kliendi andmed.
See on meie mudeli jaoks kõik. Nüüd muudame welcome_message vaadet. Avage welcome_message.php, mis asub:
application/views/welcome_message.php
Asenda kood järgmisega:
<!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>
Salvesta muudatused ja laadi järgmine URL veebibrauseris: http://localhost:3000/Peaksite nägema kliendikaarti, nagu on näidatud alloleval pildil.


