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.

  • 🏗️ Põhimuster: MVC jagab rakenduse mudeli, vaate ja kontrolleri komponentideks.
  • 💾 Mudel: Suhtleb andmeallikaga ja hoiab äriloogikat, sageli Active Recordi kaudu.
  • 🎛️ kontroller: Kuulab päringuid, valideerib sisendi ning koordineerib mudelit ja vaadet.
  • 🖼️ vaade: Esitab andmeid HTML-i, CSS-i ja minimaalse PHP-na, vaba liigsest loogikast.
  • 🔗 Lahtine sidur: Komponendid töötavad iseseisvalt, seega saavad nii esiotsa kui ka tagaotsa tööd teha paralleelselt.
  • Lühikesed sildid: CodeSüütajavaated kasutavad mallide selgemaks muutmiseks tavaliselt lühikesi PHP kajasilte.
  • 🔁 Taotlusvoog: Kontroller mudeli vaatamiseks ja seejärel HTML tagasi brauserisse.

CodeIgniter MVC raamistik

Mis on MVC?

MVC on lühend sõnadest Model-View-Controller. See on arhitektuuriline muster, mis jagab rakenduse kolmeks põhikomponendiks:

  1. Mudel tegeleb äriloogika ja andmebaasi interaktsioonidega.
  2. Kontroller koordineerib mudeli ja vaate vahelisi tegevusi.
  3. 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.

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.

Kliendiandmete kaardi renderdaja Codeelektrisütik

KKK

See tähendab, et äriloogika elab mudelis endas.ping kontroller on õhuke ja keskendub marsruutimistaotlustele. See muudab loogika taaskasutatavaks ning kontrolleri lihtsamini loetavaks ja testitavaks.

Vaade peaks esitama ainult andmeid. Keepping Selle loogika eraldab mured, nii et disainerid saavad paigutust muuta ärireegleid puutumata ja samu andmeid saab kuvada erinevates vaadetes.

Active Record on sisseehitatud päringute koostaja, mis võimaldab mudelitel andmebaasi lugeda ja kirjutada meetodikõnede abil, mitte toore SQL-iga. See aitab vältida ka SQL-i süstimist esca abil.ping väärtused.

Tehisintellekt suudab funktsiooni kirjelduse põhjal genereerida sobivaid kontrolleri-, mudeli- ja vaatefaile ning hoida nimetamise järjepidevana. RevVaadake genereeritud päringuid ja valideerige need enne nende käivitamist.

Lühike kajasild on kompaktne viis väärtuse vaates kuvamiseks. Täielikku PHP sildiplokki kasutatakse lausete ja juhtstruktuuride jaoks. Mõlemad on väljundi jaoks samaväärsed, kuid lühikesed sildid hoiavad vaated korras.

Võta see postitus kokku järgmiselt: