CodeIgniter MVC (Model View Controller) keretrendszer példa

⚡ Okos összefoglaló

CodeAz Igniter MVC keretrendszer egy alkalmazást modellre, nézetre és vezérlőre oszt. A modell kezeli az adatokat és az üzleti logikát, a vezérlő koordinálja a kéréseket, a nézet pedig megjeleníti az eredményt, ami laza összekapcsolást, rugalmasságot és magasabb fejlesztői termelékenységet biztosít.

  • 🏗️ Alapminta: Az MVC egy alkalmazást modell-, nézet- és vezérlőkomponensekre oszt.
  • 💾 Modell: Interakcióba lép az adatforrással és tárolja az üzleti logikát, gyakran az Active Recordon keresztül.
  • 🎛️ Vezérlő: Figyeli a kéréseket, validálja a bemenetet, és koordinálja a modellt és a nézetet.
  • 🖼️ Kilátás: HTML, CSS és minimális PHP formátumban jeleníti meg az adatokat, mentesen a nehézkes logikától.
  • 🔗 Laza tengelykapcsoló: A komponensek egymástól függetlenül működnek, így a front-end és a back-end feladatok párhuzamosan futhatnak.
  • Rövid címkék: CodeAz Igniter nézetek gyakran rövid PHP echo tageket használnak a sablonok letisztultabbá tételéhez.
  • 🔁 Kérelemfolyamat: Vezérlőből modellt készíteni megtekintéshez, majd HTML-t visszaküldeni a böngészőnek.

CodeIgniter MVC keretrendszer

Mi az MVC?

Az MVC a Model-View-Controller rövidítése. Ez egy architekturális minta, amely az alkalmazást három fő összetevőre osztja:

  1. A modell az üzleti logikával és az adatbázis-interakciókkal foglalkozik.
  2. A vezérlő koordinálja a modell és a nézet közötti tevékenységeket.
  3. A nézet felelős az adatok megjelenítéséért.

Az MVC architektúramintájának néhány előnye a következő:

  • Laza csatolás – az alkatrészek egymástól függetlenül léteznek és működnek.
  • Rugalmasság – könnyen módosíthatja az egyes komponenseket.
  • 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 back-end fejlesztők a modellekre koncentrálhatnak, és mivel a rendszer lazán összekapcsolt, végül minden együtt működik.

Modell

A modell felelős az adatforrásokkal való interakcióért. Ez általában egy adatbázis, de lehet egy szolgáltatás is, amely biztosítja a kért adatokat. Az is bevett gyakorlat, hogy az üzleti logikát a modellekben tartják meg a vezérlő helyett. Ezt a gyakorlatot általában „kövér modell, sovány vezérlő”-nek nevezik.

A modell általában adatokat ír az adatbázisba, és mechanizmust biztosít az adatok szerkesztésére, frissítésére és törlésére. Egy modern webes alkalmazásban a modellek adathozzáférési tervezési mintákat, például az Active Record-ot használnak, 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)-et használják az adatok eléréséhez.

ellenőr

A vezérlő figyeli a felhasználóktól érkező erőforrás-kéréseket. Közvetítőként működik a modell és a nézet között, és időnként üzleti szabályokat is implementál. Tegyük fel, hogy a vezérlő egy kérést kap egy felhasználó adatbázisba való regisztrálására.

A vezérlő adatellenőrzést végezhet a beküldött adatokon, hogy megbizonyosodjon arról, hogy minden szükséges paraméter jelen van. Ha valami hiányzik, a felhasználót a megfelelő hibaüzenettel átirányítja a regisztrációs oldalra. A vezérlő kérheti a modellt további ellenőrzésre is, például annak ellenőrzésére, hogy a beküldött e-mail cím létezik-e már. Ha minden ellenőrzési szabály sikeres, a vezérlő 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, általában csak annyit, hogy végig lehessen menni a modelltől kapott adatgyűjteményeken, vagy egy segítőfüggvényt az adatok tisztításához vagy szerkesztési hivatkozások létrehozásához. A legtöbb modern webalkalmazás sablonmotorokat használ saját pszeudokódszerű szintaxissal, amelyet a tervezők megértenek. 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ódot használhatod:

<?=$title?>

Szemben ezzel:

<?php
echo $title;
?>

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

<?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 használja 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.

Hogyan működik az MVC keretrendszer?

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

CodeGyújtóvezérlő

Most pedig elemezzük, mi történt a betöltés során. URL a webböngészőbe. Nyissa meg a Welcome.php controller fájlt, amely az application/controllers mappában található. A következő kódot kell látnia:

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

Itt:

  • defined('BASEPATH') VAGY exit('Nincs közvetlen szkripthozzáférés'); megakadályozza a vezérlőhöz való közvetlen hozzáférést, ha a kérés nem az index.php-n keresztül érkezett. Ez biztonsági okokból van így.
  • A Welcome osztály kiterjeszti a CI_Controllert {…} definiálja a Welcome vezérlő osztályt és kiterjeszti a CI_Controller szülő osztályt.
  • A public function index(){…} definiálja az index metódust, amely válaszol a következőre: URL http://localhost:3000.
  • Betölti a welcome_message nézetet, amely az application/views könyvtárban található.

Most a következőképpen frissítjük az index metódust:

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.
  • $data['customer'] = $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 fixen kódoltuk az értéket, de a valós alkalmazásokban ez az URI egy paramétere lenne.
  • A $this->load->view('welcome_message',$data); függvény betölti a welcome_message nézetet és átadja a $data változót.

CodeGyújtó modell

Hozzuk létre most a fenti kódban hivatkozott modellt. Az egyszerűség kedvéért a modellünk nem fog interakcióba lépni a adatbázis de egy statikus ügyfélrekordot fog visszaadni. A következő oktatóanyagokban adatbázisokkal fogunk dolgozni. Hozz létre egy Customers_model.php fájlt az application/models könyvtárban, és add 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.
  • A public function get_customer($id) {…} a get_customer metódust definiálja egy ügyfél-azonosító alapján.
  • A $data[…] paraméter a fiktív ügyfelünk statikus értékeit határozza meg. Ennek az adatbázis által visszaadott sornak kell lennie.
  • return $data; visszaadja az ügyfél adatait.

Ennyi a modellünk. Most módosítsuk a welcome_message nézetet. Nyissuk meg a welcome_message.php fájlt, amely a következő helyen található:

application/views/welcome_message.php

Cserélje le 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 módosításokat, és töltse be a következőket URL a webböngészőben: http://localhost:3000/Az alábbi képen látható módon kell látnia az ügyfélkártyát.

Ügyféladatok kártyáját renderelte a CodeGyújtó

GYIK

Ez azt jelenti, hogy az üzleti logika a modellben él, tartsuk meg.ping A vezérlő vékony és az útvonalválasztási kérésekre összpontosít. Ezáltal a logika újrafelhasználható, a vezérlő pedig könnyebben olvasható és tesztelhető.

Egy nézetnek csak adatokat kell megjelenítenie. Keepping A logika szétválasztja a feladatokat, így a tervezők az üzleti szabályok érintése nélkül szerkeszthetik az elrendezést, és ugyanazok az adatok különböző nézetekben is megjeleníthetők.

Az Active Record egy beépített lekérdezéskészítő, amely lehetővé teszi a modellek számára, hogy metódushívásokkal olvassák és írják az adatbázist a nyers SQL helyett. Segít megelőzni az esca általi SQL-befecskendezést is.ping értékeket.

A mesterséges intelligencia képes egyező vezérlő-, modell- és nézetfájlokat generálni egy funkció leírásából, és az elnevezéseket konzisztens módon tartani. RevTekintse meg a létrehozott lekérdezéseket és azok érvényesítését a futtatásuk előtt.

A rövid visszhang címke egy kompakt módja az értékek nézetben történő kinyomtatásának. A teljes php címkeblokkot utasításokhoz és vezérlőstruktúrákhoz használják. Mindkettő egyenértékű a kimenet szempontjából, de a rövid címkék rendben tartják a nézeteket.

Foglald össze ezt a bejegyzést a következőképpen: