CodeIgniter MVC (Model View Controller) raamistik koos näitega
Mis on MVC?
Model-View-Controli MVC standardid. See on arhitektuurne muster, mis jagab rakenduse kolmeks põhikomponendiks.
1. Mudel tegeleb äriloogika ja andmebaaside interaktsioonidega
2. Kontroller koordineerib tegevusi mudeli ja vaate vahel
3. View vastutab andmete esitamise eest
Järgmised on mõned MVC arhitektuurimustri eelised
- Lahtine ühendus - komponendid eksisteerivad ja toimivad üksteisest sõltumatult.
- Paindlikkus – üksikutes komponentides on lihtne muudatusi teha
- Suurenenud tootlikkus – projektiga saab korraga töötada rohkem kui üks inimene. Esiotsa arendajad saavad töötada vaadete ja esitluste kallal, samas kui taustaarendajad saavad keskenduda mudelitele ja kuna süsteem on lõdvalt ühendatud, töötab see päeva lõpus
MUDEL
Mudel vastutab andmeallikatega suhtlemise eest. Tavaliselt on see andmebaas, kuid see võib olla ka teenus, mis pakub nõutud andmeid. Samuti on levinud tava, et mudelites sisaldub äriloogika, mitte vastutav töötleja. Seda tava nimetatakse tavaliselt rasvamudeli kõhnaks kontrolleriks.
Tavaliselt kirjutab mudel andmed andmebaasi, pakub mehhanismi andmete redigeerimiseks ja värskendamiseks ning kustutamiseks. Kaasaegses veebirakenduses kasutavad mudelid andmetele juurdepääsu kujundamise mustreid, näiteks aktiivset kirjet, et lihtsustada andmebaasiga suhtlemist.
Näiteks CodeIgniter kasutab mudelite abistamiseks sisseehitatud teeki Active Record, samas kui teised raamistikud, nagu Laravel, kasutavad andmetele juurdepääsu hõlbustavat Eloquent Object Relational Mapperit (ORM).
kontroller
Kontroller kuulab kasutajatelt sissetulevaid ressursside taotlusi. See toimib vahepealsena mudeli ja vaate vahel ning rakendab mõnikord ka mõningaid ärireegleid. Oletame, et kontroller saab taotluse registreerida kasutaja andmebaasis.
Vastutav töötleja võib esitada andmete valideerimise, et tagada kõigi nõutud parameetrite esitamine. Kui midagi on puudu, suunatakse kasutaja registreerimislehele ja kuvatakse vastav veateade. Vastutav töötleja võib nõuda ka mudelil täiendavat valideerimist, kontrollides, kas esitatud e-posti aadress on juba olemas. Kui kõik valideerimisreeglid läbivad, esitab vastutav töötleja andmed protsessi jaoks mudelile 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 JavaScript. Vaated sisaldavad minimaalset programmeerimiskoodi. Vaadetes sisalduvat koodi kasutatakse tavaliselt mudelilt või abifunktsioonilt parameetritena saadud andmekogude sirvimiseks andmete puhastamiseks või kirjete redigeerimiseks linkide loomiseks. Enamik kaasaegseid veebirakendusi kasutab tavaliselt mallimootoreid, mis määratlevad oma süntaksi, mis sarnaneb rohkem pseudokoodiga ja mida disainerid saavad hõlpsasti mõista. CodeIgniteriga töötamisel on tavaline kasutada lühikesi PHP silte ja juhtstruktuure. CodeIgniteris millegi kuvamiseks võib kasutada järgmist koodi
<?=$title?>
Erinevalt
<?php echo $title; ?>
Juhtstruktuurid on tavaliselt kirjutatud järgmiselt
<?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?><p> </li> <?php endforeach; ?>
Nagu ülaltoodud näitest näha, kasutab vaade kombinatsiooni PHP ja HTML, selle asemel, et panna kõik puhtasse PHP-koodi.
Kuidas MVC raamistikud töötavad?
Järgmine pilt näitab MVC raamistiku tööd
Kontroller võtab kasutajalt päringu vastu, suhtleb vajadusel andmebaasi mudeliga ning tagastab tulemuse brauserisse tagasi HTML-koodi kujul, mille brauser tõlgendas inimloetavasse vormingusse ja kuvab kasutajale.
CodeIgniteri kontroller
Vaatame nüüd, mis juhtus, kui laadisime ülaltoodud URL-i veebibrauserisse.
Avage fail Welcome.php kontroller, mille asukoht on rakendus/kontrollerid
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,
- defineeritud('BASEPATH') VÕI exit('Otsene skripti juurdepää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_Controller {…} määratleb Tere tulemast kontrolleri klassi ja laiendab vanemklassi CI_Controller
- public function index(){…} määrab indeksi meetodi, mis vastab URL-ile
http://localhost:3000
- $this->load->view('welcome_message'); laadib vaate tervitussõnum, mis asub rakenduste/vaadete kataloogis
Nüüd värskendame 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.
- $andmed['klient'] = $see->klientide_mudel->hanki_klient(3); kutsub välja klientide_mudel meetodi get_customer ja edastab parameetri 3. Selles näites oleme väärtuse kõvasti kodeerinud, kuid tegelikes rakendustes oleks see parameeter URI-st.
- $this->load->view('tere_teade',$andmed); laadib vaate welcome_message ja edastab vaatele muutuja $data
CodeIgniteri mudel
Loome nüüd vaate, millele viitasime ülaltoodud koodis. Lihtsuse huvides ei toimi meie mudel seadmega andmebaas kuid tagastab staatilise kliendikirje. Andmebaasidega töötame järgmistes õpetustes.
Looge rakenduses/mudelites fail Customers_model.php
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) {…} määrab kliendi id-l põhineva kliendi hankimise meetodi
- $data[…] määratleb meie väljamõeldud kliendi staatilised väärtused. See peaks olema andmebaasist tagastatud rida.
- tagasta $andmed; tagastab kliendi andmed.
See tähendab, et meie mudeli jaoks. Muudame nüüd vaadet Welcome_message
Avage welcome_message.php, mis asub aadressil
application/views/welcome_message.php
Asendage 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>
Salvestage muudatused
Laadige veebibrauserisse järgmine URL
http://localhost:3000/
Te peaksite nägema kliendikaarti, nagu on näidatud alloleval pildil
kokkuvõte
- MVC on arhitektuurne muster, mis jagab rakenduse kolmeks põhikomponendiks
- Mudel vastutab andmeallikatega suhtlemise eest
- Kontroller kuulab kasutajatelt sissetulevaid ressursside taotlusi
- Veebirakendustes sisaldavad vaated sageli HTML-i, CSS-i ja valikuliselt JavaScript
- Kontroller võtab kasutajalt päringu vastu, suhtleb vajadusel andmebaasi mudeliga ja tagastab tulemuse HTML-koodi kujul brauserisse