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.

  • 🏗️ Kärnmönster: MVC delar upp en applikation i modell-, vy- och kontrollkomponenter.
  • 💾 Artikelnummer : Interagerar med datakällan och lagrar affärslogiken, ofta via Active Record.
  • 🎛️ Kontroller: Lyssnar efter förfrågningar, validerar indata och koordinerar modellen och vyn.
  • 🖼️ Se: Presenterar data som HTML, CSS och minimalt med PHP, fritt från tung logik.
  • 🔗 Lös koppling: Komponenter fungerar oberoende av varandra, så front-end- och back-end-arbete kan köras parallellt.
  • Korta taggar: CodeIgniter-vyer använder vanligtvis korta PHP-ekotaggar för renare mallar.
  • 🔁 Begäranflöde: Kontroller till modell för vy, sedan HTML tillbaka till webbläsaren.

CodeIgniter MVC-ramverket

Vad är MVC?

MVC står för Model-View-Controller. Det är ett arkitekturmönster som delar upp applikationen i tre huvudkomponenter:

  1. Modellen hanterar affärslogik och databasinteraktioner.
  2. Kontrollern koordinerar aktiviteterna mellan modellen och vyn.
  3. 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.

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.

Kundinformationskort utfärdat av Codeigniter

Vanliga frågor

Det betyder att affärslogiken finns i modellen, keeping styrenheten är tunn och fokuserad på routingförfrågningar. Detta gör logiken återanvändbar och styrenheten lättare att läsa och testa.

En vy bör endast presentera data.ping Logiken ur den separerar problem, så att designers kan redigera layouten utan att röra affärsregler, och samma data kan visas i olika vyer.

Active Record är en inbyggd frågebyggare som låter modeller läsa och skriva databasen med metodanrop istället för rå SQL. Den hjälper också till att förhindra SQL-injektion av esca.ping värden.

AI kan generera matchande styrenhets-, modell- och vyfiler från en beskrivning av en funktion och hålla namngivningen konsekvent. RevVisa de genererade frågorna och valideringen innan du kör dem.

Den korta echo-taggen är ett kompakt sätt att skriva ut ett värde i en vy. Hela php-taggblocket används för uttalanden och kontrollstrukturer. Båda är likvärdiga för utdata, men korta taggar håller vyerna snygga.

Sammanfatta detta inlägg med: