CodeVoorbeeld van het Igniter MVC (Model View Controller) framework
โก Slimme samenvatting
CodeHet Igniter MVC-framework verdeelt een applicatie in een model, een view en een controller. Het model verwerkt data en bedrijfslogica, de controller coรถrdineert verzoeken en de view presenteert het resultaat. Dit zorgt voor losse koppeling, flexibiliteit en een hogere productiviteit voor ontwikkelaars.

Wat is MVC?
MVC staat voor Model-View-Controller. Het is een architectuurpatroon dat de applicatie opsplitst in drie belangrijke componenten:
- Het model behandelt de bedrijfslogica en de interactie met de database.
- De controller coรถrdineert de activiteiten tussen het model en de weergave.
- View is verantwoordelijk voor de presentatie van de gegevens.
Hieronder volgen enkele voordelen van het MVC-architectuurpatroon:
- Losse koppeling โ de componenten bestaan โโen functioneren onafhankelijk van elkaar.
- Flexibiliteit โ u kunt eenvoudig wijzigingen aanbrengen in afzonderlijke componenten.
- Verhoogde productiviteit โ meerdere personen kunnen tegelijkertijd aan het project werken. Front-end ontwikkelaars kunnen zich richten op de weergave en presentatie, terwijl back-end ontwikkelaars zich concentreren op de modellen. Doordat het systeem losjes gekoppeld is, werkt alles uiteindelijk naadloos samen.
Model
Het model is verantwoordelijk voor de interactie met gegevensbronnen. Dit is meestal een database, maar het kan ook een service zijn die de gevraagde gegevens levert. Het is ook gebruikelijk om de bedrijfslogica in de modellen te plaatsen in plaats van in de controller. Deze werkwijze wordt vaak aangeduid als "dik model, dunne controller".
Het model schrijft doorgaans gegevens naar de database en biedt een mechanisme voor het bewerken, bijwerken en verwijderen van gegevens. In een moderne webapplicatie gebruiken modellen ontwerppatronen voor gegevenstoegang, zoals Active Record, om de interactie met de database te vereenvoudigen.
Bijvoorbeeld CodeIgniter maakt gebruik van een ingebouwde Active Record-bibliotheek ter ondersteuning van de modellen, terwijl andere frameworks zoals Laravel de Eloquent Object Relational Mapper (ORM) gebruiken voor gegevenstoegang.
Controller
De controller luistert naar binnenkomende verzoeken van gebruikers om resources. Hij fungeert als tussenpersoon tussen het model en de view en implementeert soms ook bepaalde bedrijfsregels. Stel dat de controller een verzoek ontvangt om een โโgebruiker in de database te registreren.
De controller kan de ingediende gegevens valideren om te controleren of alle vereiste parameters aanwezig zijn. Als er iets ontbreekt, wordt de gebruiker doorgestuurd naar de registratiepagina met een passende foutmelding. De controller kan het model ook vragen om aanvullende validatie uit te voeren, zoals controleren of het ingediende e-mailadres al bestaat. Als alle validatieregels slagen, stuurt de controller de gegevens naar 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 JavaScriptViews bevatten minimale programmeercode, meestal net genoeg om door verzamelingen gegevens te lopen die van het model zijn ontvangen, of een hulpfunctie voor het opschonen van gegevens of het maken van bewerkingslinks. De meeste moderne webapplicaties gebruiken sjabloonengines met hun eigen pseudocode-achtige syntaxis die ontwerpers kunnen begrijpen. Bij het werken met CodeIn Igniter is het gebruikelijk om korte PHP-tags en besturingsstructuren te gebruiken. Om iets weer te geven in CodeIgniter, je zou de volgende code kunnen gebruiken:
<?=$title?>
In tegenstelling tot:
<?php
echo $title;
?>
Besturingsstructuren worden doorgaans als volgt geschreven:
<?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?></p> </li> <?php endforeach; ?>
Zoals je in het bovenstaande voorbeeld kunt zien, maakt de weergave gebruik van 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.
Een controller ontvangt het verzoek van de gebruiker, communiceert indien nodig met het databasemodel en stuurt vervolgens 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.
CodeOntstekingscontroller
Laten we nu eens bekijken wat er gebeurde toen we de gegevens laadden. URL Open de webbrowser. Open het bestand Welcome.php controller in de map application/controllers. Je zou de volgende code moeten 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:
- defined('BASEPATH') OR exit('No direct script access allowed'); voorkomt directe toegang tot de controller als het verzoek niet via index.php binnenkwam. Dit is om veiligheidsredenen.
- class Welcome extends CI_Controller {โฆ} definieert de Welcome-controllerklasse en erft van de bovenliggende klasse CI_Controller.
- public function index(){โฆ} definieert de index-methode die reageert op de URL
http://localhost:3000. - $this->load->view('welcome_message'); laadt de view welcome_message die zich in de map application/views bevindt.
We gaan 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['customer'] = $this->customers_model->get_customer(3); roept de get_customer-methode van customers_model aan en geeft de parameter 3 door. In dit voorbeeld hebben we de waarde vastgelegd, maar in echte applicaties zou dit een parameter uit de URI zijn.
- $this->load->view('welcome_message',$data); laadt de welcome_message-weergave en geeft de variabele $data door.
CodeOntstekermodel
Laten we nu het model maken waarnaar in de bovenstaande code wordt verwezen. Voor de eenvoud zal ons model niet interageren met de databank maar dit levert een statisch klantrecord op. In de volgende tutorials werken we met databases. Maak een bestand Customers_model.php aan in application/models en 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 uit de database zijn.
- retourneer $ gegevens; retourneert de klantgegevens.
Dat was het voor ons model. Laten we nu de welcome_message-weergave aanpassen. Open welcome_message.php in:
application/views/welcome_message.php
Vervang de code door 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 en laad het volgende. URL in de webbrowser: http://localhost:3000/U zou de klantenkaart moeten zien zoals weergegeven in de afbeelding hieronder.


