CodeEksempel på Igniter MVC (Model View Controller) Framework

⚡ Smart opsummering

CodeIgniter MVC Framework opdeler en applikation i Model, View og Controller. Modellen håndterer data og forretningslogik, controlleren koordinerer anmodninger, og View præsenterer resultatet, hvilket giver løs kobling, fleksibilitet og højere udviklerproduktivitet.

  • 🏗️ Kernemønster: MVC opdeler en applikation i model-, view- og controller-komponenter.
  • 💾 Model: Interagerer med datakilden og indeholder forretningslogikken, ofte via Active Record.
  • 🎛️ controller: Lytter efter anmodninger, validerer input og koordinerer modellen og visningen.
  • ️ Udsigt: Præsenterer data som HTML, CSS og minimal PHP, fri for tung logik.
  • 🔗 Løs kobling: Komponenter fungerer uafhængigt, så front-end og back-end arbejde kan køre parallelt.
  • ⚡ Korte tags: CodeIgniter-visninger bruger almindeligvis korte PHP echo-tags til at give renere skabeloner.
  • 🔁 Anmodningsflow: Controller til model for visning, derefter HTML tilbage til browseren.

CodeIgniter MVC Framework

Hvad er MVC?

MVC står for Model-View-Controller. Det er et arkitekturmønster, der opdeler applikationen i tre hovedkomponenter:

  1. Modellen omhandler forretningslogik og databaseinteraktioner.
  2. Controlleren koordinerer aktiviteterne mellem modellen og visningen.
  3. View er ansvarlig for datapræsentationen.

Følgende er nogle af fordelene ved MVC-arkitekturmønsteret:

  • Løs kobling – komponenterne eksisterer og fungerer uafhængigt af hinanden.
  • Fleksibilitet – du kan nemt foretage ændringer i individuelle komponenter.
  • Øget produktivitet – mere end én person kan arbejde på projektet på samme tid. Frontend-udviklere kan arbejde på views og præsentationer, mens backend-udviklere fokuserer på modeller, og fordi systemet er løst koblet sammen, fungerer det hele sammen i sidste ende.

Model

Modellen er ansvarlig for at interagere med datakilder. Dette er normalt en database, men det kan også være en tjeneste, der leverer de ønskede data. Det er også almindelig praksis at beholde forretningslogikken i modellerne snarere end i controlleren. Denne praksis kaldes normalt "fed model, tynd controller".

Modellen skriver normalt data ind i databasen og giver en mekanisme til redigering, opdatering og sletning af data. I en moderne webapplikation bruger modeller dataadgangsdesignmønstre såsom Active Record for at gøre det nemmere at interagere med databasen.

For eksempel: CodeIgniter bruger et indbygget Active Record-bibliotek til at understøtte modellerne, mens andre frameworks som Laravel bruger Eloquent Object Relational Mapper (ORM) til dataadgang.

controller

Controlleren lytter efter indgående anmodninger om ressourcer fra brugere. Den fungerer som mellemled mellem modellen og visningen og implementerer til tider også nogle forretningsregler. Antag, at controlleren modtager en anmodning om at registrere en bruger i databasen.

Controlleren kan udføre datavalidering på det, der er blevet indsendt, for at sikre, at alle de nødvendige parametre er til stede. Hvis noget mangler, omdirigeres brugeren til registreringssiden med den relevante fejlmeddelelse. Controlleren kan også bede modellen om at udføre yderligere validering, f.eks. kontrollere, om den indsendte e-mailadresse allerede findes. Hvis alle valideringsregler er godkendt, sender controlleren dataene til modellen til behandling og venter på svaret.

Når modellen har behandlet informationen og returneret et positivt svar, indlæser controlleren den relevante visning og sender dataene tilbage fra modellen som en parameter.

Se

Visningen omhandler data præsenteret for slutbrugeren. I webapplikationer indeholder visninger ofte HTML, CSS og evt JavaScriptVisninger indeholder minimal programmeringskode, normalt lige nok til at gennemgå datasamlinger modtaget fra modellen, eller en hjælpefunktion til at rydde op i data eller oprette redigeringslinks. De fleste moderne webapplikationer bruger skabelonprogrammer med deres egen pseudokodelignende syntaks, som designere kan forstå. Når man arbejder med CodeIgniter, det er almindelig praksis at bruge korte PHP-tags og kontrolstrukturer. For at vise noget i CodeIgniter, du kan bruge følgende kode:

<?=$title?>

I modsætning til:

<?php
echo $title;
?>

Kontrolstrukturer er normalt skrevet som følger:

<?php foreach ($customers as $customer): ?>
<li>
<p><?=$customer->first_name?></p>
</li>
<?php endforeach; ?>

Som du kan se i eksemplet ovenfor, bruger visningen en kombination af PHP og HTML i stedet for at omslutte alt i ren PHP-kode.

Sådan fungerer MVC-frameworks

Følgende billede viser, hvordan MVC-frameworket fungerer.

Sådan fungerer MVC-frameworket

En controller modtager anmodningen fra brugeren, interagerer med databasemodellen om nødvendigt og returnerer derefter resultatet til browseren i form af HTML-kode, som browseren fortolker til et menneskeligt læsbart format og viser for brugeren.

CodeTændingscontroller

Lad os nu gennemgå, hvad der skete, da vi indlæste URL i webbrowseren. Åbn filen Welcome.php controller, der findes i application/controllers. Du bør se følgende kode:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}

Her:

  • defined('BASEPATH') ELLER exit('Ingen direkte scriptadgang tilladt'); forhindrer direkte adgang til controlleren, hvis anmodningen ikke kom via index.php. Dette er af sikkerhedsmæssige årsager.
  • klassen Welcome extends CI_Controller {…} definerer Welcome-controllerklassen og udvider den overordnede klasse CI_Controller.
  • public function index(){…} definerer indeksmetoden, der reagerer på URL http://localhost:3000.
  • $this->load->view('welcome_message'); indlæser visningen welcome_message, der findes i mappen application/views.

Vi opdaterer nu indeksmetoden som følger:

public function index()
{
$this->load->model('customers_model');
$data['customer'] = $this->customers_model->get_customer(3);
$this->load->view('welcome_message',$data);
}

Her:

  • $this->load->model('kundermodel'); indlæser kundens model.
  • $data['customer'] = $this->customers_model->get_customer(3); kalder get_customer-metoden fra customers_model og sender parameter 3. I dette eksempel har vi hardkodet værdien, men i virkelige applikationer ville dette være en parameter fra URI'en.
  • $this->load->view('welcome_message',$data); indlæser welcome_message-visningen og sender $data-variablen ind.

CodeTændingsmodel

Lad os nu oprette den model, der refereres til i koden ovenfor. For enkelhedens skyld vil vores model ikke interagere med database men vil returnere en statisk kundepost. Vi vil arbejde med databaser i de næste vejledninger. Opret en fil Customers_model.php i application/models og tilføj følgende kode:

<?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;
}
}

Her:

  • klasse Customers_model udvider CI_Model {...} definerer modellen Customers_model, der udvider CI_Model.
  • public function get_customer($id) {…} definerer get_customer-metoden baseret på et kunde-id.
  • $data[…] definerer de statiske værdier for vores fiktive kunde. Dette skal være en række, der returneres fra databasen.
  • returnere $data; returnerer kundedata.

Det var det for vores model. Lad os nu ændre welcome_message-visningen. Åbn welcome_message.php, der er placeret i:

application/views/welcome_message.php

Erstat koden med følgende:

<!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>

Gem ændringerne og indlæs følgende URL i webbrowseren: http://localhost:3000/Du bør se kundekortet som vist på billedet nedenfor.

Kundeoplysningskort leveret af Codetændsats

Ofte Stillede Spørgsmål

Det betyder, at forretningslogikken bor i modellen, keeping Controlleren er tynd og fokuseret på routinganmodninger. Dette gør logikken genanvendelig og controlleren nemmere at læse og teste.

En visning bør kun præsentere data.ping Logikken i den adskiller bekymringerne, så designere kan redigere layoutet uden at røre ved forretningsregler, og de samme data kan vises i forskellige visninger.

Active Record er en indbygget forespørgselsbygger, der lader modeller læse og skrive databasen med metodekald i stedet for rå SQL. Den hjælper også med at forhindre SQL-injektion fra esca.ping værdier.

AI kan generere matchende controller-, model- og visningsfiler ud fra en beskrivelse af en funktion og holde navngivningen konsistent. RevSe de genererede forespørgsler og validering, før du kører dem.

Det korte echo-tag er en kompakt måde at udskrive en værdi i en visning. Den fulde php-tagblok bruges til sætninger og kontrolstrukturer. Begge er ækvivalente til output, men korte tags holder visningerne ryddelige.

Opsummer dette indlæg med: