CodeIgniter MVC (Model View Controller) Framework met voorbeeld

Inhoudsopgave:

Anonim

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 van de voordelen van het MVC-architecturale patroon

  • Losse koppeling - de componenten bestaan ​​en functioneren onafhankelijk van elkaar.
  • Flexibiliteit - men kan gemakkelijk wijzigingen aanbrengen in individuele componenten
  • Verhoogde productiviteit - meer dan één persoon kan tegelijkertijd aan het project werken. De front-end-ontwikkelaars kunnen werken aan weergaven en presentaties, terwijl back-end-ontwikkelaars zich kunnen concentreren op modellen en aangezien het systeem losjes is gekoppeld, werkt het aan het eind van de dag

In deze tutorial leer je:

  • Wat is MVC?
    • Model
    • Controller
    • Visie
  • Hoe MVC-frameworks werken?
  • CodeIgniter-controller
  • CodeIgniter-model

Model

Het model is verantwoordelijk voor de interactie met gegevensbronnen. Dit is meestal een database, maar het kan ook een dienst zijn die de gevraagde gegevens levert. Het is ook gebruikelijk om de bedrijfslogica in de modellen te hebben en niet in de controller. Deze praktijk wordt meestal vet-model skinny controller genoemd.

Het model schrijft gewoonlijk gegevens naar de database, biedt een mechanisme voor het bewerken en bijwerken en verwijderen van gegevens. In een moderne webtoepassing gebruiken modellen ontwerppatronen voor gegevenstoegang, zoals actieve record, om de interactie met de database gemakkelijker te maken.

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

Controller

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

De verwerkingsverantwoordelijke kan gegevensvalidatie uitvoeren op wat is ingediend om ervoor te zorgen dat alle vereiste parameters zijn ingediend. Als er iets ontbreekt, wordt de gebruiker doorgestuurd naar de registratiepagina met het juiste foutbericht weergegeven. De verwerkingsverantwoordelijke kan het model ook vragen om meer validatie uit te voeren door te controleren of het opgegeven e-mailadres al bestaat. Als alle validatieregels slagen, verzendt 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 als parameter door.

Visie

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


In tegenstelling tot

Controlestructuren worden gewoonlijk als volgt geschreven


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

Hoe MVC-frameworks werken?

De volgende afbeelding laat zien dat het MVC-framework werkt

Een controller ontvangt het verzoek van de gebruiker, werkt indien nodig samen met het databasemodel en stuurt het resultaat vervolgens terug naar de browser in de vorm van HTML-code die de browser heeft geïnterpreteerd in een door mensen leesbaar formaat en aan de gebruiker wordt getoond.

CodeIgniter-controller

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

Open het bestand Welcome.php controller gelokaliseerde applicatie / controllers

U zou de volgende code moeten kunnen zien

load->view('welcome_message');}}

HIER,

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

We zullen nu de indexmethode 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 ('customers_model'); laadt het klantenmodel.
  • $ data ['customer'] = $ 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 real life applicaties zou dit een parameter van de URI zijn.
  • $ this-> load-> view ('welcome_message', $ data); laadt de welcome_message view en geeft de $ data variabele door aan de view

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 database, maar een statisch klantrecord retourneren. In de volgende tutorials zullen we met databases werken.

Maak een bestand Customers_model.php in applicatie / modellen

Voeg de volgende code toe


HIER,

  • class Customers_model extends CI_Model {…} definieert het model Customers_model dat CI_Model uitbreidt.
  • openbare functie 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.
  • $ data teruggeven; geeft de klantgegevens terug.

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

Open welcome_message.php in

application/views/welcome_message.php

Vervang de code door het volgende

CodeIgniter MVC Basics

Customer Details Card

Customer ID :

First Name :

Last Name :

Address :

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

Overzicht

  • MVC is een architectonisch patroon dat de applicatie opsplitst in drie hoofdcomponenten
  • Het model is verantwoordelijk voor de interactie met gegevensbronnen
  • De controller luistert naar inkomende verzoeken om bronnen van de gebruikers
  • In webtoepassingen bevatten views vaak HTML, CSS en optioneel JavaScript
  • Een controller ontvangt het verzoek van de gebruiker, werkt indien nodig samen met het databasemodel en stuurt het resultaat terug naar de browser in de vorm van HTML-code