CodeExempel på Igniter MVC (Model View Controller)-ramverk
⚡ Smart sammanfattning
CodeIgniter MVC Framework delar upp en applikation i modell, vy och kontroller. Modellen hanterar data och affärslogik, kontrollern koordinerar förfrågningar och vyn presenterar resultatet, vilket ger lös koppling, flexibilitet och högre produktivitet för utvecklare.
Vad är MVC?
MVC står för Model-View-Controller. Det är ett arkitekturmönster som delar upp applikationen i tre huvudkomponenter:
- Modellen hanterar affärslogik och databasinteraktioner.
- Kontrollern koordinerar aktiviteterna mellan modellen och vyn.
- View ansvarar för datapresentationen.
Följande är några av fördelarna med MVC-arkitekturmönstret:
- Lös koppling – komponenterna existerar och fungerar oberoende av varandra.
- Flexibilitet – du kan enkelt göra ändringar i enskilda komponenter.
- Ökad produktivitet – fler än en person kan arbeta med projektet samtidigt. Frontend-utvecklare kan arbeta med vyer och presentationer, medan backend-utvecklare fokuserar på modeller, och eftersom systemet är löst kopplat fungerar allt tillsammans i slutändan.
Modell
Modellen ansvarar för att interagera med datakällor. Detta är vanligtvis en databas, men det kan också vara en tjänst som tillhandahåller den begärda informationen. Det är också vanligt att behålla affärslogiken i modellerna snarare än i styrenheten. Denna praxis brukar kallas "fet modell, skinny styrenhet".
Modellen skriver vanligtvis data in i databasen och tillhandahåller en mekanism för att redigera, uppdatera och ta bort data. I en modern webbapplikation använder modeller designmönster för dataåtkomst, till exempel Active Record, för att göra det enklare att interagera med databasen.
Till exempel, CodeIgniter använder ett inbyggt Active Record-bibliotek för att stödja modellerna, medan andra ramverk som Laravel använder Eloquent Object Relational Mapper (ORM) för dataåtkomst.
Regulator
Styrenheten lyssnar efter inkommande resursförfrågningar från användare. Den fungerar som mellanhand mellan modellen och vyn, och implementerar ibland även vissa affärsregler. Anta att styrenheten tar emot en begäran om att registrera en användare i databasen.
Styrenheten kan utföra datavalidering på det som har skickats in för att säkerställa att alla nödvändiga parametrar finns. Om något saknas omdirigeras användaren till registreringssidan med lämpligt felmeddelande. Styrenheten kan också be modellen att utföra ytterligare validering, till exempel kontrollera om den skickade e-postadressen redan finns. Om alla valideringsregler godkänns skickar styrenheten informationen till modellen för bearbetning och väntar på svar.
När modellen har bearbetat informationen och returnerat ett positivt svar, laddar styrenheten den lämpliga vyn och skickar in data som returneras från modellen som en parameter.
Visa
Vyn behandlar data som presenteras för slutanvändaren. I webbapplikationer innehåller vyer ofta HTML, CSS och eventuellt JavaScriptVyer innehåller minimal programmeringskod, vanligtvis precis tillräckligt för att loopa igenom datasamlingar som tas emot från modellen, eller en hjälpfunktion för att rensa upp data eller skapa redigeringslänkar. De flesta moderna webbapplikationer använder mallmotorer med sin egen pseudokodliknande syntax som designers kan förstå. När man arbetar med CodeIgniter, det är vanligt att använda korta PHP-taggar och kontrollstrukturer. För att visa något i CodeIgniter, du kan använda följande kod:
<?=$title?>
I motsats till:
<?php
echo $title;
?>
Kontrollstrukturer skrivs vanligtvis enligt följande:
<?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?></p> </li> <?php endforeach; ?>
Som du kan se i exemplet ovan använder vyn en kombination av PHP och HTML istället för att innesluta allt i ren PHP-kod.
Hur MVC-ramverk fungerar
Följande bild visar hur MVC-ramverket fungerar.
En kontrollant tar emot begäran från användaren, interagerar med databasmodellen om det behövs och returnerar sedan resultatet till webbläsaren i form av HTML-kod, som webbläsaren tolkar till ett läsbart format och visar för användaren.
CodeTändningsregulator
Låt oss nu gå igenom vad som hände när vi laddade upp URL i webbläsaren. Öppna filen Welcome.php controller som finns i application/controllers. Du bör se följande kod:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
Här:
- defined('BASEPATH') ELLER exit('Ingen direkt skriptåtkomst tillåten'); förhindrar direktåtkomst till kontrollanten om begäran inte kom via index.php. Detta är av säkerhetsskäl.
- klassen Welcome extends CI_Controller {…} definierar Welcome-kontrollklassen och utökar den överordnade klassen CI_Controller.
- public function index(){…} definierar indexmetoden som svarar på URL
http://localhost:3000. - `$this->load->view('welcome_message');` laddar vyn `welcome_message` som finns i katalogen `application/views`.
Vi kommer nu att uppdatera indexmetoden enligt följande:
public function index()
{
$this->load->model('customers_model');
$data['customer'] = $this->customers_model->get_customer(3);
$this->load->view('welcome_message',$data);
}
Här:
- $this->load->model('customers_model'); laddar kundens modell.
- $data['customer'] = $this->customers_model->get_customer(3); anropar get_customer-metoden för customers_model och skickar in parameter 3. I det här exemplet har vi hårdkodat värdet, men i verkliga applikationer skulle detta vara en parameter från URI:n.
- $this->load->view('welcome_message',$data); laddar welcome_message-vyn och skickar in variabeln $data.
CodeTändningsmodell
Låt oss nu skapa modellen som refereras till i koden ovan. För enkelhetens skull kommer vår modell inte att interagera med databas men kommer att returnera en statisk kundpost. Vi kommer att arbeta med databaser i nästa handledning. Skapa en fil Customers_model.php i application/models och lägg till följande 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; } }
Här:
- class Customers_model extends CI_Model {...} definierar modellen Customers_model som utökar CI_Model.
- public function get_customer($id) {…} definierar get_customer-metoden baserat på ett kund-ID.
- $data[…] definierar de statiska värdena för vår fiktiva kund. Detta ska vara en rad som returneras från databasen.
- returnera $data; returnerar kunddata.
Det var allt för vår modell. Låt oss nu modifiera welcome_message-vyn. Öppna welcome_message.php som finns i:
application/views/welcome_message.php
Ersätt koden med följande:
<!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>
Spara ändringarna och ladda följande URL i webbläsaren: http://localhost:3000/Du bör se kundkortet som visas på bilden nedan.



