CodeIgniter MVC (Model View Controller) keretrendszer példával

Mi az MVC?

MVC szabványok a Model-View-Control számára. Ez egy építészeti minta, amely három fő összetevőre osztja az alkalmazást.

1. A modell üzleti logikával és adatbázis-kölcsönhatásokkal foglalkozik

2. A vezérlő koordinálja a tevékenységeket a modell és a nézet között

3. A View felelős az adatok megjelenítéséért

Az alábbiakban bemutatjuk az MVC építészeti minta előnyeit

  • Laza tengelykapcsoló - az alkatrészek egymástól függetlenül léteznek és működnek.
  • Rugalmasság – könnyen módosítható az egyes alkatrészek
  • Megnövekedett termelékenység – egynél több ember dolgozhat egyszerre a projekten. A front-end fejlesztők a nézeteken és a prezentációkon dolgozhatnak, míg a háttérfejlesztők a modellekre koncentrálhatnak, és mivel a rendszer lazán össze van kapcsolva, a nap végén működik

Modell

A modell felelős az adatforrásokkal való interakcióért. Ez általában egy adatbázis, de lehet olyan szolgáltatás is, amely a kért adatokat szolgáltatja. Szintén bevett gyakorlat, hogy az üzleti logikát a modellek tartalmazzák, szemben a kontrollerrel. Ezt a gyakorlatot általában kövér modell sovány kontrollernek nevezik.

A modell általában adatokat ír az adatbázisba, mechanizmust biztosít az adatok szerkesztéséhez és frissítéséhez, törléséhez. Egy modern webalkalmazásban a modellek adathozzáférési tervezési mintákat használnak, például az aktív rekordot, hogy megkönnyítsék az adatbázissal való interakciót.

Például a CodeIgniter egy beépített Active Record könyvtárat használ a modellek támogatására, míg más keretrendszerek, például a Laravel az Eloquent Object Relational Mapper (ORM) funkciót használják, amely segíti az adatok elérését.

ellenőr

A vezérlő figyeli a felhasználóktól érkező erőforráskéréseket. Köztes szerepet játszik a modell és a nézet között, és időnként bizonyos üzleti szabályokat is végrehajt. Tegyük fel, hogy a vezérlő kérést kap egy felhasználó regisztrálására az adatbázisban.

Az adatkezelő a benyújtottakon adatellenőrzést végezhet, hogy megbizonyosodjon arról, hogy minden szükséges paraméter benyújtásra került. Ha valami hiányzik, a felhasználó a regisztrációs oldalra kerül, és megjelenik a megfelelő hibaüzenet. Az adatkezelő kérheti a modelltől további érvényesítés végrehajtását is azáltal, hogy ellenőrzi, hogy a beküldött e-mail cím már létezik-e. Ha az összes érvényesítési szabály megfelel, akkor az adatkezelő elküldi az adatokat a modellnek feldolgozásra, és várja a választ.

Miután a modell feldolgozta az információt és pozitív választ adott, a vezérlő betölti a megfelelő nézetet, és paraméterként átadja a modellből visszaadott adatokat.

Kilátás

A nézet a végfelhasználónak bemutatott adatokkal foglalkozik. A webes alkalmazásokban a nézetek gyakran tartalmaznak HTML-t, CSS-t és opcionálisan JavaForgatókönyv. A nézetek minimális programozási kódot tartalmaznak. A nézetekben található kódot általában a modelltől vagy a segédfunkciótól paraméterként kapott adatok gyűjteményeinek hurkolására használják adatok törléséhez vagy hivatkozások létrehozásához a rekordok szerkesztéséhez. A legtöbb modern webalkalmazás általában sablonmotorokat használ, amelyek meghatározzák saját szintaxisukat, amely inkább pszeudokód, és könnyen érthető a tervezők számára. A CodeIgniterrel való munka során általános gyakorlat a rövid PHP címkék és vezérlőstruktúrák használata. A CodeIgniterben való megjelenítéséhez használhatja a következő kódot

<?=$title?>

Szemben a

<?php
echo $title;
?>

A vezérlési struktúrákat általában a következőképpen írják fel

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

Amint a fenti példából látható, a nézet a következők kombinációját fogja használni PHP és HTML-t ahelyett, hogy mindent tiszta PHP-kódba zárna.

Hogyan működnek az MVC keretrendszerek?

A következő kép az MVC keretrendszer működését mutatja be

MVC Frameworks működik

A vezérlő fogadja a kérést a felhasználótól, szükség esetén interakcióba lép az adatbázismodellel, majd az eredményt visszaküldi a böngészőnek HTML kód formájában, amelyet a böngésző ember által olvasható formátumba értelmez és megjelenít a felhasználónak.

CodeIgniter vezérlő

Most részletezzük, mi történt, amikor a fenti URL-t betöltöttük a böngészőbe.

Nyissa meg a Welcome.php controller nevű alkalmazást/vezérlőket

Látnia kell a következő kódot

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

ITT,

  • definiált('BASEPATH') VAGY exit('Nem engedélyezett közvetlen szkript hozzáférés'); megakadályozza a közvetlen hozzáférést a vezérlőhöz, ha a kérés nem az index.php-n keresztül érkezett. ez biztonsági okokból történik.
  • osztály Welcome kiterjeszti a CI_Controller {…} meghatározza a Welcome vezérlő osztályt és kiterjeszti a szülő osztályt CI_Controller
  • public function index(){…} határozza meg az index metódusát, amely válaszol az URL-re http://localhost:3000
    • $this->load->view('welcome_message'); betölti az application/views könyvtárban található welcome_message nézetet

Most az alábbiak szerint frissítjük az indexmódszert

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

ITT,

  • $this->load->model('customers_model'); betölti az ügyfelek modelljét.
  • $adat['ügyfél'] = $this->customers_model->get_customer(3); meghívja a customers_model get_customer metódusát, és átadja a 3-as paramétert. Ebben a példában keményen kódoltuk az értéket, de valós alkalmazásokban ez az URI paramétere lenne.
  • $this->load->view('welcome_message',$data); betölti a welcome_message nézetet, és átadja a $data változót a nézetnek

CodeIgniter modell

Most hozzuk létre azt a nézetet, amelyre a fenti kódban hivatkoztunk. Az egyszerűség kedvéért a modellünk nem fog kölcsönhatásba lépni a adatbázis de statikus ügyfélrekordot ad vissza. A következő oktatóanyagokban adatbázisokkal fogunk dolgozni.

Hozzon létre egy Customers_model.php fájlt az Application/models mappában

Adja hozzá a következő kódot

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

ITT,

  • osztály Customers_model kiterjeszti a CI_Model {…} meghatározza a Customers_model modellt, amely kiterjeszti a CI_Modelt.
  • public függvény get_customer($id) {…} a get_customer metódust határozza meg egy ügyfél-azonosító alapján
  • A $data[…] fiktív ügyfelünk statikus értékeit határozza meg. Ennek az adatbázisból visszaadott sornak kell lennie.
  • return $data; visszaadja az ügyfél adatait.

Vagyis a mi modellünknek. Most módosítsuk az welcome_message nézetet

Nyissa meg a welcome_message.php-t a következő helyen:

application/views/welcome_message.php

Cserélje ki a kódot a következőre

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

Mentse el a változtatásokat

Töltse be a következő URL-t a webböngészőbe

http://localhost:3000/

Látnia kell az ügyfélkártyát az alábbi képen látható módon

CodeIgniter modell

Összegzésként

  • MVC egy olyan építészeti minta, amely három fő összetevőre osztja az alkalmazást
  • A modell felelős az adatforrásokkal való interakcióért
  • A vezérlő figyeli a felhasználóktól érkező erőforráskéréseket
  • A webes alkalmazásokban a nézetek gyakran tartalmaznak HTML-t, CSS-t és opcionálisan JavaForgatókönyv
  • A vezérlő megkapja a kérést a felhasználótól, szükség esetén interakcióba lép az adatbázismodellel, majd az eredményt HTML kód formájában visszaküldi a böngészőnek