Model-view-controller

Model-view-controller (MVC) (din engleză, aproximativ: model-față-controlor) este un model arhitectural utilizat în ingineria software. Succesul modelului se datorează izolării logicii de business față de considerentele interfeței cu utilizatorul, rezultând o aplicație unde aspectul vizual sau/și nivelele inferioare ale regulilor de business sunt mai ușor de modificat, fără a afecta alte nivele.
Arhitectură
- Model
Această parte a controlatorului manipulează operațiunile logice și de utilizare de informație (trimisă dinainte de către rangul său superior) pentru a rezulta de o formă ușor de înțeles.
- Viziune
Acestui membru al familiei îi corespunde reprezentarea grafică, sau mai bine zis exprimarea ultimei forme a datelor: interfața grafică ce interacționează cu utilizatorul final. Rolul său este de a evidenția informația obținută până ce ea ajunge la controlator.
- Controlator
Cu acest element putem controla accesul la aplicația noastră. Pot fi fișiere, scripts sau programe; orice tip de informație permisă de interfață. În acest fel putem diversifica conținutul nostru de o formă dinamică și statică, în același timp.
Structură
Cu ajutorul Controlatorului, modelului sau a viziunii putem manipula următoarele elemente: date. Depinde de noi cum manipulăm și interpretăm aceste "date". Acum cunoaștem că unicele date ale unei adrese web statice este: obținerea unui fișier în discul dur (hard disk) sau din Internet, etc. și, interpretat (recunoscut/decodificat) sau nu, serverul răspunde.
Modelul, precum controlatorul și viziunea manipulează toate datele ce se relaționeză cu el. Și numai Viziunea poate demonstra această informație. În acest fel am demonstrat ierarhia programului nostru: Controlator-Model-Viziune.
Logică
Pentru o aplicație web ușoara este necesar să stabilim aceste elemente:
- O bază (CMV)
- Controlator - acesta trebuie să fie capabil de a manipula rute, fișiere, clase, metode și funcții
- Model - este semănător unui script obișnuit într-un server, doar că regrupat sub un model reutilizabil.
- Viziune - asemănător includerii unui fișier în aplicația noastră.
- Un sistem
- Router - cu el putem împărți cerințele noastre fără multe condiționale
- Incărcător (Loader)
Exemplu
// Index.php
// -----
// ------ Clases ------
class Base {}
class Controller extends Base {
function load($name) {
require_
$this->$name =& new $name();
}
}
class Model extends Controller {
function view($name, $data) {
extract($data);
include "app/view/" . $name . ".php";
}
}
// ------ Router & Loader ------
function _route($controller, $model) {
if (is_file("app/$controller.php")) {
require_once "app/" . $controller . ".php";
$object = new $controller();
$object->$model();
}
}
// ----- Rutina -----
_route($_GET['section'], $_GET['name']);
În continuare, este suficient să controlăm aceste procese, să le dezvoltăm și să le completăm cu niște scripts adiționali.
Aplicație
Dacă fișierul nostru se numește Foo (clasă) și celălalt fișier al nostru, Bar (metodă) este necesară creearea unui următor fișier în folderul app/.
// app/Foo.php
// -----
class Foo extends Controller {
function Foo() {
$this->load('test');
}
function Bar() {
echo '<b>Testing!!!</b>';
echo $this->test->does();
}
}
xindex, repedit
Ca rezultat la solicitarea Çç
De exemplu la ?section=Foo&name=Bar ar trebui să vedem următorul text
Testing!!!.