Kezdőoldal » Számítástechnika » Weblapkészítés » Valaki letisztázná az MVC...

Valaki letisztázná az MVC használatát phpban?

Figyelt kérdés
Szóval az MVC pattern helyes használatára lennék kíváncsi, googlizás után ahány találat annyi féle megoldás, de mégis melyik a helyes használat? Például vegyünk egy egyszerű oldalt amin van egy fejléc content meg lábléc, illetve egy beviteli mező és egy gomb. A gombnyomásra lekérdezi sql adatbázisból pl. a beírt névhez tartozó adatokat. Erre mi lenne az MVC pattern helyes használata? Egyik oldal szerint amit olvastam: van egy model könyvtár osztályokkal, adatbázis kapcsolat létrehozása basic lekérdezés stb...a controllerben egy vizsgálat, hogy történt-e post/get request (itt már felmerül bennem a kérdés, hogy a konkrét lekérdezést itt érdemes megírni és átadni a modelben implementált lekérdező methodnak vagy a konkrét lekérdezéseket is egy külön model osztályban érdemes létrehozni). A view is érdekes kérdés számomra, hogy az maga az index.php és ebből történik a controller methodok hívása? Vagy érdemes a view részt is szeparálni az index.php-tól. Illetve az egyik oldal megoldása az volt, hogy a view konstuktora megkapta a controller és model példányt is, és amikor a controller szólt a modelnek, hogy hajtsd végre a lekérdezést, utána a view kiolvasta a model tömbjét a lekérdezéssel. Másik példa pedig a view szólt a controllernek és a controlleren keresztül kapta vissza a vew az adatokat. Nagyon hálás lennék ha valaki elmondaná a helyes használatát, esetleg a fenti példán keresztül bemutatná! Köszi!

2021. máj. 14. 17:56
1 2
 1/12 anonim ***** válasza:
68%

Én valahogy így képzelném el gombonyomástól kiíratásig:


Controller: Gombnyomásra a megfelelő esemény meghívása.

V

Model: SQL-ből az adatok lekérdezése.

V

View: Adatok megjelenítése (nyers szöveg megformázása).

2021. máj. 14. 18:10
Hasznos számodra ez a válasz?
 2/12 A kérdező kommentje:

Ez így oké, de akkor a kérdés, hogy a lekérdezett adatok a contolleren keresztül mennek vissza a view felé? Vagy a view direktben lekérdezi a modelltől? Mert láttam mindkét megoldást, melyik a helyes?

Illetve a view az szintén külön van az index.php-tól? vagy egybe szokták tenni? Bár gyanúsan külön, mivel úgy akkor a frontend fejlesztő tud párhuzamosan dolgozni a backend fejlesztővel. De pl. olyan megoldást is láttam, hogy az index.php semmi mást nem tartalmazott mint egy controller példányosítást és egy method hívást, és a controllerben volt lekezelve, hogy milyen adatokat kérdezzen le illetve view könyvtárba mentett php file-okat hívott, amiben html kódok voltak. Szóval még mindig nem világos a válaszod alapján, de azért köszönöm!

2021. máj. 14. 18:15
 3/12 anonim ***** válasza:

Megnyomódik a gomb. A View jelzi a Controllernek, hogy gombot nyomtak, csinálni kéne valamit. A Controller a Model-hez fordul, mert SQL lekérdezésre lenne szükség. A Model lekérdezi az adatokat és visszaküldi a Controllernek. A Controller továbbküldi a Viewnek, hogy nesze, itt vannak az adatok, formázd meg és jelenítsd meg a usernek.


Azt hittem a model ismeretében egyértelmű hogyan gondolom a működést, de akkor talán így érthetőbb, ha az interakciókat írom le.


Itt találsz egy leírást is az MVC-ről:

[link]


Ne mások kódjait vedd alapul, hanem a model működését értsd meg.

2021. máj. 14. 18:27
Hasznos számodra ez a válasz?
 4/12 A kérdező kommentje:
Tehát akkor a View nem kommunikál egyáltalán direktbe a Model-el csak a Controlleren keresztül!?
2021. máj. 14. 18:43
 5/12 A kérdező kommentje:
Illetve, akkor a Controllerbe nem érdemes mondjuk definiálni SQL lekérdezést, azt mind a modell végezze, a Controller csak egy "GateWay-ként funkciónál", ha jól értem. Illetve a View-t hogy érdemes fejleszteni? Külön szedve az index.php-tól?
2021. máj. 14. 18:46
 6/12 A kérdező kommentje:

Itt például a view a modelltől kérdezi vissza az adatokat:

[link]

2021. máj. 14. 18:48
 7/12 anonim ***** válasza:
#3: Nem. A model a view-nek küldi vissza az adatokat. Amiről te beszélsz, az a Model-View-Presenter.
2021. máj. 14. 22:02
Hasznos számodra ez a válasz?
 8/12 Drone007 ***** válasza:

A view fájljait is külön érdemes kezelni, ahogy a controller és model osztályokat.


Az én saját rendszeremben az előzetes feldolgozó részben a routing dönti el (a $_GET hívás alapján), hogy melyik controller illetve model osztályt kell meghívnia a rendszernek. A view pedig eszerint alakul.


Tehát nagyon fontos egy előfeldolgozó rendszer, ami az MVC-n kívül (felül) helyezkedik el, és a beérkező hívás alapján eldönti milyen struktúra hívódjon meg. Itt implementálhatod a rendszerkonstansokat, routingot, nyelviesítést, még az automatikus autorizációt is, és csak ezután kerül sor az mvc pattern által deklarált működésre, hiszen csak ez után tudja a rendszer, hogy mi a környezet (nyelv), mi a hívás, és ki a user.


A controller dönti el, hogy mely view osztályt hívja meg, hiszen egy hívás alapján a controller dönthet úgy, hogy nem létező adatokat hívtál meg, ezért az alap view hívás egy error kód view-ra állítja, stb...


Nagyon egyszerű szabály, hogy a controller állapítja meg mire van szükség, és mi "menjen ki". Tehát, ő hívogatja a modell osztályt, ami az adatbázis lekéréseket intézni, és ő adja át az adatokat a view osztálynak, ami a teljes html/css/js struktúrával echozza az infót.


A view nálam alapvetően úgy néz ki, hogy egy html keretbe (itt van a header, és minden ami a html struktúrához szükséges) hívja meg a megfelelő view osztályt, ami a kapott adatokkal a megfelelő struktúrát importálja.

2021. máj. 15. 08:17
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:

Nincs "helyes" hasznalat, plane hogy amikor eloszor kitalatak akkor internet sem volt ergo hova rakod a DB kapcsolatot? Frameworkok is kulonbozokeppen ertelmezik, de nagyjabol:


Model:

Az adat reprezentalasa az applikacioban, semmi mas, nem kommunikal DB-vel


View:

Nem kommunikal semmivel, csak template-kent van hasznalva HTTP Response body renderelesere


Controller: Egy dolga van, fogadni a Requestet es visszakuldeni a Response-t


Request a bongeszobol->

Router (ami az url-bol +akar a request method-bol eldonti hogy melyik controller action kell meghivni)->

Middleware (pipeline amin vegigmegy a request pl: kell-e bejelentkezni az adott action eleresehez?, csak XMLHttpRequest engedelyezet? van-e form input? ha igen validalni kell )->

Contoller (ha kell fogja a DB layert(repository) es visszaker egy modelt, ha valamilyen szamolas kell akkor meghiv egy business layert aminek atadja a modelt, ha menteni kell a repository nem pedig a model)->

Response (Ha minden kesz a controller csinal egy response-t, parameterkent megadod a templated meg a modelt ami lerendeli a magat a response stringet)

2021. máj. 15. 08:22
Hasznos számodra ez a válasz?
 10/12 A kérdező kommentje:

Ez az oldal például szerintem nagyon jól leírja:

[link]

Viszont, amit nem világos, hogy mi lesz az alapértelmezett "view" ha nincs semmilyen request

2021. máj. 16. 21:36
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!