CodeIgniter MVC (Model View Controller) Framework met voorbeeld

Wat is MVC?

MVC-standaarden voor Model-View-Control. Het is een architectonisch patroon dat de applicatie opsplitst in drie hoofdcomponenten.

1. Model behandelt bedrijfslogica en database-interacties

2. Controller coördineert de activiteiten tussen het model en de weergave

3. View is verantwoordelijk voor de datapresentatie

Hieronder volgen enkele voordelen van het MVC-architectuurpatroon

  • Losse koppeling: de componenten bestaan ​​en functioneren onafhankelijk van elkaar.
  • Flexibiliteit – men kan eenvoudig wijzigingen aanbrengen in afzonderlijke componenten
  • Verhoogde productiviteit – meer dan één persoon kan tegelijkertijd aan het project werken. De front-end-ontwikkelaars kunnen werken aan weergaven en presentatie, terwijl back-end-ontwikkelaars zich kunnen concentreren op modellen en omdat het systeem losjes gekoppeld is, werkt het uiteindelijk

Model

Het model is verantwoordelijk voor de interactie met gegevensbronnen. Meestal is dit een database, maar het kan ook een dienst zijn die de gevraagde gegevens aanlevert. Het is ook gebruikelijk om de bedrijfslogica in de modellen te laten zitten, in tegenstelling tot de controller. Deze praktijk wordt meestal een skinny controller met een dik model genoemd.

Het model schrijft gegevens doorgaans in de database en biedt een mechanisme voor het bewerken, bijwerken en verwijderen van gegevens. In een moderne webapplicatie gebruiken modellen ontwerppatronen voor gegevenstoegang, zoals actieve records, om de interactie met de database eenvoudiger te maken.

CodeIgniter gebruikt bijvoorbeeld een ingebouwde bibliotheek Active Record om de modellen te ondersteunen, terwijl andere raamwerken zoals Laravel Eloquent Object Relational Mapper (ORM) gebruiken die de toegang tot gegevens ondersteunt.

Controller

De controller luistert naar binnenkomende verzoeken om bronnen van de gebruikers. Het fungeert als tussenpersoon tussen het model en de visie en implementeert soms ook enkele bedrijfsregels. Stel dat de controller een verzoek ontvangt om een ​​gebruiker in de database te registreren.

De controller kan gegevensvalidatie uitvoeren op wat is ingediend om te verzekeren dat alle vereiste parameters zijn ingediend. Als er iets ontbreekt, wordt de gebruiker doorgestuurd naar de registratiepagina met het juiste foutbericht. De controller kan het model ook verzoeken om meer validatie uit te voeren door te controleren of het ingediende e-mailadres al bestaat. Als alle validatieregels slagen, dient de controller de gegevens in bij het model voor verwerking en wacht op het antwoord.

Zodra het model de informatie heeft verwerkt en een positief antwoord heeft geretourneerd, laadt de controller de juiste weergave en geeft de door het model geretourneerde gegevens door als parameter.

Bekijk

De weergave behandelt gegevens die aan de eindgebruiker worden gepresenteerd. In webapplicaties bevatten weergaven vaak HTML, CSS en optioneel JavaScript. Weergaven bevatten minimale programmeercode. De code in weergaven wordt meestal gebruikt om door verzamelingen gegevens te loopen die als parameters van het model of de helperfunctie zijn ontvangen om gegevens op te schonen of links te maken om de records te bewerken. De meeste moderne webapplicaties gebruiken meestal template-engines die hun eigen syntaxis definiëren, die meer op pseudocode lijkt en gemakkelijk door ontwerpers kan worden begrepen. Bij het werken met CodeIgniter is het gebruikelijk om korte PHP-tags en besturingsstructuren te gebruiken. Om iets in CodeIgniter weer te geven, kan men de volgende code gebruiken

<?=$title?>

In tegenstelling tot

<?php
echo $title;
?>

Controlestructuren worden meestal als volgt geschreven

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

Zoals u in het bovenstaande voorbeeld kunt zien, gebruikt de weergave een combinatie van PHP en HTML in plaats van alles in pure PHP-code te omsluiten.

Hoe MVC-frameworks werken?

De volgende afbeelding laat zien hoe het MVC-framework werkt

MVC-frameworks werken

Een controller ontvangt het verzoek van de gebruiker, communiceert indien nodig met het databasemodel en stuurt het resultaat terug naar de browser in de vorm van HTML-code. De browser interpreteert deze code vervolgens in een voor mensen leesbaar formaat en toont deze aan de gebruiker.

CodeIgniter-controller

Laten we nu eens kijken wat er net gebeurde toen we de bovenstaande URL in de webbrowser laadden.

Open het bestand Welcome.php controller met applicatie/controllers

U zou de volgende code moeten kunnen zien

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

HIER,

  • gedefinieerd('BASEPATH') OR exit('Geen directe scripttoegang toegestaan'); verhindert directe toegang tot de controller als het verzoek niet via index.php binnenkomt. dit is voor veiligheidsdoeleinden.
  • class Welcome breidt CI_Controller uit {…} definieert de Welcome-controllerklasse en breidt de bovenliggende klasse CI_Controller uit
  • public function index(){…} definieert de indexmethode die reageert op de URL http://localhost:3000
    • $this->load->view('welkom_bericht'); laadt de view Welcome_message die zich in de map application/views bevindt

We zullen de indexmethode nu als volgt bijwerken

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

HIER,

  • $this->load->model('klanten_model'); laadt het klantenmodel.
  • $data['klant'] = $this->customers_model->get_customer(3); roept de get_customer methode van customers_model aan en geeft parameter 3 door. In dit voorbeeld hebben we de waarde hard gecodeerd, maar in echte toepassingen zou dit een parameter uit de URI zijn.
  • $this->load->view('welcome_message',$data); laadt de weergave Welcome_message en geeft de variabele $data door aan de weergave

CodeIgniter-model

Laten we nu de weergave maken waarnaar we in de bovenstaande code hebben verwezen. Voor de eenvoud zal ons model geen interactie hebben met de databank maar retourneert een statisch klantrecord. In de volgende tutorials zullen we met databases werken.

Maak een bestand Customers_model.php in applicatie/modellen

Voeg de volgende code toe

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

HIER,

  • klasse Customers_model breidt CI_Model uit {…} definieert het model Customers_model dat CI_Model uitbreidt.
  • public function get_customer($id) {…} definieert de get customer-methode op basis van een klant-ID
  • $data[…] definieert de statische waarden van onze fictieve klant. Dit moet een rij zijn die uit de database wordt geretourneerd.
  • retourneer $ gegevens; retourneert de klantgegevens.

Dat wil zeggen, het is voor ons model. Laten we nu de welkomstberichtweergave aanpassen

Open Welcome_message.php gevestigd in

application/views/welcome_message.php

Vervang de code met het volgende

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

Sla de wijzigingen op

Laad de volgende URL in de webbrowser

http://localhost:3000/

U zou de klantenkaart moeten kunnen zien zoals weergegeven in de onderstaande afbeelding

CodeIgniter-model

Samenvatting

  • MVC is een architectuurpatroon dat de applicatie opsplitst in drie hoofdcomponenten
  • Het model is verantwoordelijk voor de interactie met gegevensbronnen
  • De controller luistert naar binnenkomende verzoeken om bronnen van de gebruikers
  • In webapplicaties bevatten weergaven vaak HTML, CSS en optioneel JavaScript
  • Een controller ontvangt het verzoek van de gebruiker, communiceert indien nodig met het databasemodel en stuurt het resultaat vervolgens terug naar de browser in de vorm van HTML-code

Dagelijkse Guru99 Nieuwsbrief

Begin uw dag met het laatste en belangrijkste AI-nieuws, direct bezorgd.