CodeIgniter MVC (Model View Controller) -kehys esimerkin kanssa

Mikä on MVC?

MVC-standardit Model-View-Controlille. Se on arkkitehtoninen kuvio, joka jakaa sovelluksen kolmeen pääkomponenttiin.

1. Malli käsittelee liiketoimintalogiikkaa ja tietokantavuorovaikutuksia

2. Controller koordinoi toimintaa mallin ja näkymän välillä

3. View vastaa tietojen esittämisestä

Seuraavassa on joitain MVC-arkkitehtonisen kuvion etuja

  • Löysä kytkentä - komponentit ovat olemassa ja toimivat toisistaan ​​riippumatta.
  • Joustavuus – yksittäisiin komponentteihin on helppo tehdä muutoksia
  • Lisääntynyt tuottavuus – useampi kuin yksi henkilö voi työskennellä projektin parissa samanaikaisesti. Etupään kehittäjät voivat työstää näkymiä ja esityksiä, kun taas taustakehittäjät voivat keskittyä malleihin, ja koska järjestelmä on löyhästi kytketty, se toimii päivän päätteeksi.

Malli

Malli vastaa vuorovaikutuksesta tietolähteiden kanssa. Tämä on yleensä tietokanta, mutta se voi olla myös palvelu, joka tarjoaa pyydetyt tiedot. On myös yleinen käytäntö, että malleihin sisältyy liiketoimintalogiikka toisin kuin rekisterinpitäjä. Tätä käytäntöä kutsutaan yleensä nimellä fat model skinny controller.

Malli yleensä kirjoittaa tietoja tietokantaan, tarjoaa mekanismin tietojen muokkaamiseen, päivittämiseen ja poistamiseen. Nykyaikaisessa verkkosovelluksessa mallit käyttävät datan käytön suunnittelumalleja, kuten aktiivista tietuetta, helpottaakseen vuorovaikutusta tietokannan kanssa.

Esimerkiksi CodeIgniter käyttää sisäänrakennettua Active Record -kirjastoa auttamaan malleja, kun taas muut puitteet, kuten Laravel, käyttävät Eloquent Object Relational Mapperia (ORM), joka auttaa tietojen käyttöä.

ohjain

Ohjain kuuntelee tulevia resurssipyyntöjä käyttäjiltä. Se toimii välikappaleena mallin ja näkymän välillä ja toteuttaa toisinaan myös joitain liiketoiminnan sääntöjä. Oletetaan, että ohjain vastaanottaa pyynnön rekisteröidä käyttäjä tietokantaan.

Rekisterinpitäjä voi suorittaa toimitettujen tietojen validoinnin varmistaakseen, että kaikki vaaditut parametrit on toimitettu. Jos jotain puuttuu, käyttäjä ohjataan rekisteröintisivulle ja näytetään asianmukainen virheilmoitus. Rekisterinpitäjä voi myös pyytää mallia suorittamaan lisää vahvistusta tarkistamalla, onko lähetetty sähköpostiosoite jo olemassa. Jos kaikki validointisäännöt läpäisevät, rekisterinpitäjä lähettää tiedot mallille prosessia varten ja odottaa vastausta.

Kun malli on käsitellyt tiedot ja palauttanut positiivisen vastauksen, ohjain lataa sopivan näkymän ja välittää mallista palautetun tiedon parametrina.

Näytä

Näkymä käsittelee loppukäyttäjälle esitettyä dataa. Verkkosovelluksissa näkymät sisältävät usein HTML:n, CSS:n ja valinnaisesti JavaKäsikirjoitus. Näkymät sisältävät vähimmäisohjelmointikoodin. Näkymien sisältämää koodia käytetään yleensä mallin tai aputoiminnon parametreina saatujen tietokokoelmien silmukassa tietojen puhdistamista tai linkkien luomista tietueiden muokkaamista varten. Useimmat nykyaikaiset verkkosovellukset käyttävät yleensä mallinkoneita, jotka määrittävät oman syntaksinsa, joka on enemmän kuin pseudokoodi ja jonka suunnittelijat voivat helposti ymmärtää. CodeIgniterin kanssa työskennellessä on yleinen käytäntö käyttää lyhyitä PHP-tageja ja ohjausrakenteita. Voit näyttää jotain CodeIgniterissä käyttämällä seuraavaa koodia

<?=$title?>

Toisin kuin

<?php
echo $title;
?>

Ohjausrakenteet kirjoitetaan yleensä seuraavasti

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

Kuten yllä olevasta esimerkistä näet, näkymä käyttää yhdistelmää PHP ja HTML sen sijaan, että suljettaisiin kaikki puhtaaseen PHP-koodiin.

Kuinka MVC-kehykset toimivat?

Seuraava kuva näyttää MVC-kehyksen toiminnan

MVC Frameworks toimii

Ohjain vastaanottaa pyynnön käyttäjältä, on tarvittaessa vuorovaikutuksessa tietokantamallin kanssa ja palauttaa sitten tuloksen takaisin selaimeen HTML-koodin muodossa, jonka selain tulkitsi ihmisen luettavaan muotoon ja näyttää käyttäjälle.

CodeIgniter ohjain

Selvitetään nyt, mitä juuri tapahtui, kun latasimme yllä olevan URL-osoitteen verkkoselaimeen.

Avaa tiedosto Welcome.php controller, jossa on sovellus/ohjaimet

Sinun pitäisi pystyä näkemään seuraava koodi

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

TÄSSÄ,

  • defined('BASEPATH') TAI exit('Ei suoraa komentosarjan käyttöä sallittu'); estää suoran pääsyn ohjaimeen, jos pyyntö ei tullut index.php:n kautta. tämä on turvallisuussyistä.
  • luokka Tervetuloa laajentaa CI_Controller {…} määrittää Tervetuloa-ohjainluokan ja laajentaa pääluokan CI_Controller
  • public function index(){…} määrittää indeksimenetelmän, joka vastaa URL-osoitteeseen http://localhost:3000
    • $this->load->view('welcome_message'); lataa näkymän tervetuloviesti, joka sijaitsee Application/Views-hakemistossa

Päivitämme nyt indeksimenetelmän seuraavasti

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

TÄSSÄ,

  • $this->load->model('customers_model'); lataa asiakkaan mallin.
  • $tiedot['asiakas'] = $this->customers_model->get_customer(3); kutsuu asiakkaat_mallin get_customer-metodia ja välittää parametrin 3. Tässä esimerkissä olemme koodannut arvon, mutta tosielämän sovelluksissa tämä olisi URI:n parametri.
  • $this->load->view('welcome_message',$data); lataa welcome_message-näkymän ja välittää $data-muuttujan näkymään

CodeIgniter malli

Luodaan nyt näkymä, johon viitattiin yllä olevassa koodissa. Yksinkertaisuuden vuoksi mallimme ei ole vuorovaikutuksessa tietokanta mutta palauttaa staattisen asiakastietueen. Työskentelemme tietokantojen kanssa seuraavissa opetusohjelmissa.

Luo tiedosto Customers_model.php kohdassa Application/models

Lisää seuraava koodi

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

TÄSSÄ,

  • luokka Asiakkaat_malli laajentaa CI_malli {…} määrittää mallin Customers_model, joka laajentaa CI_mallia.
  • julkinen funktio get_customer($id) {…} määrittää asiakastunnukseen perustuvan get customer -menetelmän
  • $data[…] määrittelee kuvitteellisen asiakkaamme staattiset arvot. Tämän pitäisi olla tietokannasta palautettu rivi.
  • palauttaa $data; palauttaa asiakastiedot.

Eli meidän mallillemme. Muokataan nyt tervetuloviesti-näkymää

Avaa welcome_message.php, joka sijaitsee osoitteessa

application/views/welcome_message.php

Korvaa koodi seuraavalla

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

Tallenna muutokset

Lataa seuraava URL-osoite verkkoselaimeen

http://localhost:3000/

Sinun pitäisi pystyä näkemään asiakaskortti alla olevan kuvan mukaisesti

CodeIgniter malli

Yhteenveto

  • MVC on arkkitehtoninen kuvio, joka jakaa sovelluksen kolmeen pääkomponenttiin
  • Malli vastaa vuorovaikutuksesta tietolähteiden kanssa
  • Ohjain kuuntelee tulevia resurssipyyntöjä käyttäjiltä
  • Verkkosovelluksissa näkymät sisältävät usein HTML:n, CSS:n ja valinnaisesti JavaKäsikirjoitus
  • Ohjain vastaanottaa pyynnön käyttäjältä, on tarvittaessa vuorovaikutuksessa tietokantamallin kanssa ja palauttaa sitten tuloksen takaisin selaimeen HTML-koodin muodossa