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