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, CodeAz Igniter egy beépített Active Record könyvtárat használ a modellek támogatására, míg más keretrendszerek, mint például a Laravel, az Eloquent Object Relational Mapper (ORM) funkciót használják az adathozzáférés elősegítésére.
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önyvA nézetek minimális programozási kódot tartalmaznak. A nézetekben található kódot általában arra használják, hogy végighaladjanak a modelltől vagy segédfüggvénytől paraméterként kapott adatgyűjteményeken, adatokat tisztítsanak, vagy hivatkozásokat hozzanak létre a rekordok szerkesztéséhez. A legtöbb modern webes alkalmazás általában sablonmotorokat használ, amelyek saját szintaxist definiálnak, ami inkább pszeudokódhoz hasonlít, és a tervezők könnyen megérthetik. Amikor a ...-val dolgozunk. CodeIgniter esetében bevett gyakorlat rövid PHP tagek és vezérlőstruktúrák használata. Valaminek a megjelenítése a CodeIgniter, a következő kód használható
<?=$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
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.
CodeGyújtóvezérlő
Most bontsuk le, mi történt, amikor betöltöttük a fentieket. URL a webbö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
- A public function index(){…} definiálja az index metódust, amely válaszol a következőre: URL
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
CodeGyújtó 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öltsd be a következőket URL a webböngészőben
http://localhost:3000/
Látnia kell az ügyfélkártyát az alábbi képen látható módon
Ö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


